Merge part of 'jc/diff'
[gitweb.git] / contrib / git-svn / git-svn.txt
index 4b79fb0be665e8b4e1c439f239c070ef4c3dbf54..b29073997c00944322ccc78ad5df0e1df0fc3f8f 100644 (file)
@@ -43,6 +43,11 @@ fetch::
        Fetch unfetched revisions from the SVN_URL we are tracking.
        refs/heads/git-svn-HEAD will be updated to the latest revision.
 
+       Note: You should never attempt to modify the git-svn-HEAD branch
+       outside of git-svn.  Instead, create a branch from git-svn-HEAD
+       and work on that branch.  Use the 'commit' command (see below)
+       to write git commits back to git-svn-HEAD.
+
 commit::
        Commit specified commit or tree objects to SVN.  This relies on
        your imported fetch data being up-to-date.  This makes
@@ -61,6 +66,11 @@ rebuild::
        the directory/repository you're tracking has moved or changed
        protocols.
 
+show-ignore::
+       Recursively finds and lists the svn:ignore property on
+       directories.  The output is suitable for appending to
+       the $GIT_DIR/info/exclude file.
+
 OPTIONS
 -------
 -r <ARG>::
@@ -99,6 +109,13 @@ OPTIONS
        default for objects that are commits, and forced on when committing
        tree objects.
 
+-l<num>::
+--find-copies-harder::
+       Both of these are only used with the 'commit' command.
+
+       They are both passed directly to git-diff-tree see
+       git-diff-tree(1) for more information.
+
 COMPATIBILITY OPTIONS
 ---------------------
 --no-ignore-externals::
@@ -142,9 +159,11 @@ Tracking and contributing to an Subversion managed-project:
 # 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::
-       git rev-list --pretty=oneline git-svn-HEAD..my-branch | git-svn commit
+       git-svn commit git-svn-HEAD..my-branch
 # Something is committed to SVN, pull the latest into your branch::
        git-svn fetch && git pull . git-svn-HEAD
+# Append svn:ignore settings to the default git exclude file:
+       git-svn show-ignore >> .git/info/exclude
 
 DESIGN PHILOSOPHY
 -----------------
@@ -165,7 +184,9 @@ SVN repositories via one git repository.  Simply set the GIT_SVN_ID
 environment variable to a name other other than "git-svn" (the default)
 and git-svn will ignore the contents of the $GIT_DIR/git-svn directory
 and instead do all of its work in $GIT_DIR/$GIT_SVN_ID for that
-invocation.
+invocation.  The interface branch will be $GIT_SVN_ID-HEAD, instead of
+git-svn-HEAD.  Any $GIT_SVN_ID-HEAD branch should never be modified
+by the user outside of git-svn commands.
 
 ADDITIONAL FETCH ARGUMENTS
 --------------------------
@@ -199,6 +220,13 @@ working trees with metadata files.
 svn:keywords can't be ignored in Subversion (at least I don't know of
 a way to ignore them).
 
+Renamed and copied directories are not detected by git and hence not
+tracked when committing to SVN.  I do not plan on adding support for
+this as it's quite difficult and time-consuming to get working for all
+the possible corner cases (git doesn't do it, either).  Renamed and
+copied files are fully supported if they're similar enough for git to
+detect them.
+
 Author
 ------
 Written by Eric Wong <normalperson@yhbt.net>.