X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=contrib%2Fgit-svn%2Fgit-svn.txt;h=e18fcaf4fb542ae5b5b2921fbc9abd62dbd7eb92;hb=20b1d700c94c8b5b2b8b6f1b4982858d03cd9453;hp=4102deb381201ea17370f22b1f14165a0fcb93bb;hpb=6f85a78df69d84d06eef53288c3c303109f8644e;p=git.git diff --git a/contrib/git-svn/git-svn.txt b/contrib/git-svn/git-svn.txt index 4102deb3..e18fcaf4 100644 --- a/contrib/git-svn/git-svn.txt +++ b/contrib/git-svn/git-svn.txt @@ -27,7 +27,7 @@ For importing svn, git-svnimport is potentially more powerful when operating on repositories organized under the recommended trunk/branch/tags structure, and should be faster, too. -git-svn completely ignores the very limited view of branching that +git-svn mostly ignores the very limited view of branching that Subversion has. This allows git-svn to be much easier to use, especially on repositories that are not organized in a manner that git-svnimport is designed for. @@ -101,6 +101,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 +111,8 @@ OPTIONS default for objects that are commits, and forced on when committing tree objects. + repo-config key: svn.edit + -l:: --find-copies-harder:: Both of these are only used with the 'commit' command. @@ -116,8 +120,43 @@ 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 + +ADVANCED OPTIONS +---------------- +-b:: +--branch :: + Used with 'fetch' or 'commit'. + + This can be used to join arbitrary git branches to remotes/git-svn + on new commits where the tree object is equivalent. + + When used with different GIT_SVN_ID values, tags and branches in + SVN can be tracked this way, as can some merges where the heads + end up having completely equivalent content. This can even be + used to track branches across multiple SVN _repositories_. + + This option may be specified multiple times, once for each + branch. + + repo-config key: svn.branch + +-i:: +--id :: + This sets GIT_SVN_ID (instead of using the environment). See + the section on "Tracking Multiple Repositories or Branches" for + more information on using GIT_SVN_ID. + COMPATIBILITY OPTIONS --------------------- +--upgrade:: + 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 + for tracking the remote. + --no-ignore-externals:: Only used with the 'fetch' and 'rebuild' command. @@ -132,38 +171,29 @@ COMPATIBILITY OPTIONS 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 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: -# 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 [ ...] -# 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: git-svn show-ignore >> .git/info/exclude +------------------------------------------------------------------------ DESIGN PHILOSOPHY ----------------- @@ -202,7 +232,37 @@ 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 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +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 ----