Merge branch 'jc/sha1'
[gitweb.git] / contrib / git-svn / git-svn.txt
index 7a6e0c4a4aee8b77f42b02a9ce66b52ff8b4696d..f7d3de48f0858e0210e0e982836ff589a6871585 100644 (file)
@@ -36,17 +36,22 @@ COMMANDS
 --------
 init::
        Creates an empty git repository with additional metadata
-       directories for git-svn.  The SVN_URL must be specified
-       at this point.
+       directories for git-svn.  The Subversion URL must be specified
+       as a command-line argument.
 
 fetch::
-       Fetch unfetched revisions from the SVN_URL we are tracking.
-       refs/heads/remotes/git-svn will be updated to the latest revision.
+       Fetch unfetched revisions from the Subversion URL we are
+       tracking.  refs/remotes/git-svn will be updated to the
+       latest revision.
 
-       Note: You should never attempt to modify the remotes/git-svn branch
-       outside of git-svn.  Instead, create a branch from remotes/git-svn
-       and work on that branch.  Use the 'commit' command (see below)
-       to write git commits back to remotes/git-svn.
+       Note: You should never attempt to modify the remotes/git-svn
+       branch outside of git-svn.  Instead, create a branch from
+       remotes/git-svn and work on that branch.  Use the 'commit'
+       command (see below) to write git commits back to
+       remotes/git-svn.
+
+       See 'Additional Fetch Arguments' if you are interested in
+       manually joining branches on commit.
 
 commit::
        Commit specified commit or tree objects to SVN.  This relies on
@@ -62,9 +67,9 @@ rebuild::
        tracked with git-svn.  Unfortunately, git-clone does not clone
        git-svn metadata and the svn working tree that git-svn uses for
        its operations.  This rebuilds the metadata so git-svn can
-       resume fetch operations.  SVN_URL may be optionally specified if
-       the directory/repository you're tracking has moved or changed
-       protocols.
+       resume fetch operations.  A Subversion URL may be optionally
+       specified at the command-line if the directory/repository you're
+       tracking has moved or changed protocols.
 
 show-ignore::
        Recursively finds and lists the svn:ignore property on
@@ -101,6 +106,8 @@ OPTIONS
        cannot version empty directories.  Enabling this flag will make
        the commit to SVN act like git.
 
+       repo-config key: svn.rmdir
+
 -e::
 --edit::
        Only used with the 'commit' command.
@@ -109,6 +116,8 @@ OPTIONS
        default for objects that are commits, and forced on when committing
        tree objects.
 
+       repo-config key: svn.edit
+
 -l<num>::
 --find-copies-harder::
        Both of these are only used with the 'commit' command.
@@ -116,6 +125,27 @@ OPTIONS
        They are both passed directly to git-diff-tree see
        git-diff-tree(1) for more information.
 
+       repo-config key: svn.l
+       repo-config key: svn.findcopiesharder
+
+-A<filename>::
+--authors-file=<filename>::
+
+       Syntax is compatible with the files used by git-svnimport and
+       git-cvsimport:
+
+------------------------------------------------------------------------
+loginname = Joe User <user@example.com>
+------------------------------------------------------------------------
+
+       If this option is specified and git-svn encounters an SVN
+       committer name that does not exist in the authors-file, git-svn
+       will abort operation. The user will then have to add the
+       appropriate entry.  Re-running the previous git-svn command
+       after the authors-file is modified should continue operation.
+
+       repo-config key: svn.authors-file
+
 ADVANCED OPTIONS
 ----------------
 -b<refname>::
@@ -133,6 +163,8 @@ ADVANCED OPTIONS
        This option may be specified multiple times, once for each
        branch.
 
+       repo-config key: svn.branch
+
 -i<GIT_SVN_ID>::
 --id <GIT_SVN_ID>::
        This sets GIT_SVN_ID (instead of using the environment).  See
@@ -145,7 +177,7 @@ COMPATIBILITY OPTIONS
        Only used with the 'rebuild' command.
 
        Run this if you used an old version of git-svn that used
-       'git-svn-HEAD' instead of 'remotes/git-svn' as the branch
+       "git-svn-HEAD" instead of "remotes/git-svn" as the branch
        for tracking the remote.
 
 --no-ignore-externals::
@@ -162,25 +194,29 @@ COMPATIBILITY OPTIONS
        Otherwise, do not enable this flag unless you know what you're
        doing.
 
+       repo-config key: svn.noignoreexternals
+
 Basic Examples
 ~~~~~~~~~~~~~~
 
 Tracking and contributing to an Subversion managed-project:
 
-# Initialize a tree (like git init-db)::
+------------------------------------------------------------------------
+# Initialize a tree (like git init-db):
        git-svn init http://svn.foo.org/project/trunk
-# Fetch remote revisions::
+# Fetch remote revisions:
        git-svn fetch
-# Create your own branch to hack on::
+# Create your own branch to hack on:
        git checkout -b my-branch remotes/git-svn
-# Commit only the git commits you want to SVN::
+# Commit only the git commits you want to SVN:
        git-svn commit <tree-ish> [<tree-ish_2> ...]
-# Commit all the git commits from my-branch that don't exist in SVN::
+# Commit all the git commits from my-branch that don't exist in SVN:
        git-svn commit remotes/git-svn..my-branch
-# Something is committed to SVN, pull the latest into your branch::
+# Something is committed to SVN, pull the latest into your branch:
        git-svn fetch && git pull . remotes/git-svn
-# Append svn:ignore settings to the default git exclude file::
+# Append svn:ignore settings to the default git exclude file:
        git-svn show-ignore >> .git/info/exclude
+------------------------------------------------------------------------
 
 DESIGN PHILOSOPHY
 -----------------
@@ -219,7 +255,7 @@ git commits with the following syntax:
 
 This allows you to tie unfetched SVN revision 375 to your current HEAD::
 
-       git-svn fetch 375=$(git-rev-parse HEAD)
+       `git-svn fetch 375=$(git-rev-parse HEAD)`
 
 Advanced Example: Tracking a Reorganized Repository
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -232,22 +268,24 @@ This is how Yann Dirson tracked the trunk of the ufoai directory when
 the /trunk directory of his repository was moved to /ufoai/trunk and
 he needed to continue tracking /ufoai/trunk where /trunk left off.
 
-       # This log message shows when the repository was reorganized::
+------------------------------------------------------------------------
+       # This log message shows when the repository was reorganized:
        r166 | ydirson | 2006-03-02 01:36:55 +0100 (Thu, 02 Mar 2006) | 1 line
        Changed paths:
           D /trunk
           A /ufoai/trunk (from /trunk:165)
 
-       # First we start tracking the old revisions::
+       # First we start tracking the old revisions:
        GIT_SVN_ID=git-oldsvn git-svn init \
-             https://svn.sourceforge.net/svnroot/ufoai/trunk
+                       https://svn.sourceforge.net/svnroot/ufoai/trunk
        GIT_SVN_ID=git-oldsvn git-svn fetch -r1:165
 
-       # And now, we continue tracking the new revisions::
+       # And now, we continue tracking the new revisions:
        GIT_SVN_ID=git-newsvn git-svn init \
              https://svn.sourceforge.net/svnroot/ufoai/ufoai/trunk
        GIT_SVN_ID=git-newsvn git-svn fetch \
              166=`git-rev-parse refs/remotes/git-oldsvn`
+------------------------------------------------------------------------
 
 BUGS
 ----