]> git.sesse.net Git - ffmpeg/blobdiff - doc/git-howto.txt
h264: discard slices of redundant pictures right after parsing the slice header
[ffmpeg] / doc / git-howto.txt
index 11f96803cdad134febed8da0aa57096aadb7c114..036b567084d3644775cbf51b6ecbd15be866747f 100644 (file)
@@ -28,9 +28,9 @@ Consult these resources whenever you have problems, they are quite exhaustive.
 You do not need a special username or password.
 All you need is to provide a ssh public key to the Git server admin.
 
-What follows now is a basic introduction to Git and some FFmpeg-specific
+What follows now is a basic introduction to Git and some Libav-specific
 guidelines. Read it at least once, if you are granted commit privileges to the
-FFmpeg project you are expected to be familiar with these rules.
+Libav project you are expected to be familiar with these rules.
 
 
 
@@ -44,29 +44,35 @@ I. BASICS:
 
 1. Cloning the source tree:
 
-    git clone git://git.videolan.org/ffmpeg <target>
+    git clone git://git.libav.org/libav.git <target>
 
-  This will put the FFmpeg sources into the directory <target>.
+  This will put the Libav sources into the directory <target>.
 
-    git clone git@git.videolan.org:ffmpeg <target>
+    git clone git@git.libav.org:libav.git <target>
 
-  This will put the FFmpeg sources into the directory <target> and let
+  This will put the Libav sources into the directory <target> and let
   you push back your changes to the remote repository.
 
 
 2. Updating the source tree to the latest revision:
 
-    git pull
+    git pull (--ff-only)
 
-  pulls in the latest changes from the repository to your local master branch.
+  pulls in the latest changes from the tracked branch. The tracked branch
+  can be remote. By default the master branch tracks the branch master in
+  the remote origin.
+  Caveat: Since merge commits are forbidden at least for the initial
+          months of git --ff-only or --rebase (see below) are recommended.
+          --ff-only will fail and not create merge commits if your branch
+          has diverged (has a different history) from the tracked branch.
 
 2.a Rebasing your local branches:
 
     git pull --rebase
 
   fetches the changes from the main repository and replays your local commits
-  over it. This is useful to keep all your local changes at the top of your
-  tree.
+  over it. This is required to keep all your local changes at the top of
+  Libav's master tree. The master tree will reject pushes with merge commits.
 
 
 3. Adding/removing files/directories:
@@ -91,7 +97,7 @@ I. BASICS:
     git log <filename(s)>
 
   You may also use the graphical tools like gitview or gitk or the web
-  interface available at http://git.videolan.org
+  interface available at http://git.libav.org/
 
 6. Checking source tree status:
 
@@ -105,7 +111,7 @@ I. BASICS:
 
     git diff --check
 
-  to doublecheck your changes before committing them to avoid trouble later
+  to double check your changes before committing them to avoid trouble later
   on. All experienced developers do this on each and every commit, no matter
   how small.
   Every one of them has been saved from looking like a fool by this many times.
@@ -114,7 +120,7 @@ I. BASICS:
 
   For cosmetics-only commits you should get (almost) empty output from
 
-    git diff -wb <filename(s)>
+    git diff -w -b <filename(s)>
 
   Also check the output of
 
@@ -124,6 +130,11 @@ I. BASICS:
 
     git add [-i|-p|-A] <filenames/dirnames>
 
+  Make sure you have told git your name and email address, e.g. by running
+    git config --global user.name "My Name"
+    git config --global user.email my@email.invalid
+  (--global to set the global configuration for all your git checkouts).
+
   Git will select the changes to the files for commit. Optionally you can use
   the interactive or the patch mode to select hunk by hunk what should be
   added to the commit.
@@ -133,7 +144,7 @@ I. BASICS:
   Git will commit the selected changes to your current local branch.
 
   You will be prompted for a log message in an editor, which is either
-  set in your personal configuration file throught
+  set in your personal configuration file through
 
     git config core.editor
 
@@ -194,8 +205,19 @@ I. BASICS:
 
     git format-patch <commit> [-o directory]
 
-  will generate a set of patches out of the current branch starting from
-  commit. By default the patches are created in the current directory.
+  will generate a set of patches for each commit between <commit> and
+  current HEAD. E.g.
+
+    git format-patch origin/master
+
+  will generate patches for all commits on current branch which are not
+  present in upstream.
+  A useful shortcut is also
+
+    git format-patch -n
+
+  which will generate patches from last n commits.
+  By default the patches are created in the current directory.
 
 11. Sending patches for review
 
@@ -204,6 +226,8 @@ I. BASICS:
   will send the patches created by git format-patch or directly generates
   them. All the email fields can be configured in the global/local
   configuration or overridden by command line.
+  Note that this tool must often be installed separately (e.g. git-email
+  package on Debian-based distros).
 
 12. Pushing changes to remote trees
 
@@ -223,5 +247,26 @@ I. BASICS:
   Will push the changes to the remote repository. Omitting refspec makes git
   push update all the remote branches matching the local ones.
 
-Contact the project admins <root at ffmpeg dot org> if you have technical
+13. Finding a specific svn revision
+
+  Since version 1.7.1 git supports ':/foo' syntax for specifying commits
+  based on a regular expression. see man gitrevisions
+
+    git show :/'as revision 23456'
+
+  will show the svn changeset r23456. With older git versions searching in
+  the git log output is the easiest option (especially if a pager with
+  search capabilities is used).
+  This commit can be checked out with
+
+    git checkout -b svn_23456 :/'as revision 23456'
+
+  or for git < 1.7.1 with
+
+    git checkout -b svn_23456 $SHA1
+
+  where $SHA1 is the commit SHA1 from the 'git log' output.
+
+
+Contact the project admins <git at libav dot org> if you have technical
 problems with the GIT server.