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.
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:
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:
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.
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
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.
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
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 <root at ffmpeg dot org> if you have technical
+Contact the project admins <git at libav dot org> if you have technical
problems with the GIT server.