X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=contrib%2Fgit-svn%2Fgit-svn.txt;h=f7d3de48f0858e0210e0e982836ff589a6871585;hb=c7162c1db6fef6527eafb8829d60cf26b02b0108;hp=8e9a971a8522569b58d4552a2ec1c0218c474ae2;hpb=5aad948f6500d29a755c81358ea9a07eaea26beb;p=git.git diff --git a/contrib/git-svn/git-svn.txt b/contrib/git-svn/git-svn.txt index 8e9a971a..f7d3de48 100644 --- a/contrib/git-svn/git-svn.txt +++ b/contrib/git-svn/git-svn.txt @@ -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:: --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:: +--authors-file=:: + + Syntax is compatible with the files used by git-svnimport and + git-cvsimport: + +------------------------------------------------------------------------ +loginname = Joe User +------------------------------------------------------------------------ + + 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:: @@ -133,6 +163,8 @@ ADVANCED OPTIONS 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 @@ -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,38 +194,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:: +# Append svn:ignore settings to the default git exclude file: git-svn show-ignore >> .git/info/exclude +------------------------------------------------------------------------ DESIGN PHILOSOPHY ----------------- @@ -232,7 +255,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 ----