contrib/git-svn: documentation updates
[git.git] / contrib / git-svn / git-svn.txt
index 8e9a971..e18fcaf 100644 (file)
@@ -101,6 +101,8 @@ OPTIONS
        cannot version empty directories.  Enabling this flag will make
        the commit to SVN act like git.
 
        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.
 -e::
 --edit::
        Only used with the 'commit' command.
@@ -109,6 +111,8 @@ OPTIONS
        default for objects that are commits, and forced on when committing
        tree objects.
 
        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.
 -l<num>::
 --find-copies-harder::
        Both of these are only used with the 'commit' command.
@@ -116,6 +120,9 @@ OPTIONS
        They are both passed directly to git-diff-tree see
        git-diff-tree(1) for more information.
 
        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
+
 ADVANCED OPTIONS
 ----------------
 -b<refname>::
 ADVANCED OPTIONS
 ----------------
 -b<refname>::
@@ -133,6 +140,8 @@ ADVANCED OPTIONS
        This option may be specified multiple times, once for each
        branch.
 
        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
 -i<GIT_SVN_ID>::
 --id <GIT_SVN_ID>::
        This sets GIT_SVN_ID (instead of using the environment).  See
@@ -145,7 +154,7 @@ COMPATIBILITY OPTIONS
        Only used with the 'rebuild' command.
 
        Run this if you used an old version of git-svn that used
        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::
        for tracking the remote.
 
 --no-ignore-externals::
@@ -162,38 +171,29 @@ COMPATIBILITY OPTIONS
        Otherwise, do not enable this flag unless you know what you're
        doing.
 
        Otherwise, do not enable this flag unless you know what you're
        doing.
 
---no-stop-on-copy::
-       Only used with the 'fetch' command.
-
-       By default, git-svn passes --stop-on-copy to avoid dealing with
-       the copied/renamed branch directory problem entirely.  A
-       copied/renamed branch is the result of a <SVN_URL> being created
-       in the past from a different source.  These are problematic to
-       deal with even when working purely with svn if you work inside
-       subdirectories.
-
-       Do not use this flag unless you know exactly what you're getting
-       yourself into.  You have been warned.
+       repo-config key: svn.noignoreexternals
 
 
-Examples
-~~~~~~~~
+Basic Examples
+~~~~~~~~~~~~~~
 
 Tracking and contributing to an Subversion managed-project:
 
 
 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
        git-svn init http://svn.foo.org/project/trunk
-# Fetch remote revisions::
+# Fetch remote revisions:
        git-svn fetch
        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
        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> ...]
        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
        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
        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
        git-svn show-ignore >> .git/info/exclude
+------------------------------------------------------------------------
 
 DESIGN PHILOSOPHY
 -----------------
 
 DESIGN PHILOSOPHY
 -----------------
@@ -232,7 +232,37 @@ git commits with the following syntax:
 
 This allows you to tie unfetched SVN revision 375 to your current HEAD::
 
 
 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
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you're tracking a directory that has moved, or otherwise been
+branched or tagged off of another directory in the repository and you
+care about the full history of the project, then you can read this
+section.
+
+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:
+       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:
+       GIT_SVN_ID=git-oldsvn git-svn init \
+                       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:
+       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
 ----
 
 BUGS
 ----