git-svn: recommend rebase for syncing against an SVN repo

Does this make sense to other git-svn users out there?

pull can give funky history unless you understand how git-svn works
internally, which users should not be expected to do.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Eric Wong 2006-08-25 12:48:23 -07:00 коммит произвёл Junio C Hamano
Родитель 5a990e45f9
Коммит 2e93115ed8
1 изменённых файлов: 20 добавлений и 2 удалений

Просмотреть файл

@ -235,12 +235,26 @@ Tracking and contributing to an Subversion managed-project:
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, rebase the latest into your branch:
git-svn fetch && git pull . remotes/git-svn git-svn fetch && git rebase 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
------------------------------------------------------------------------ ------------------------------------------------------------------------
REBASE VS. PULL
---------------
Originally, git-svn recommended that the remotes/git-svn branch be
pulled from. This is because the author favored 'git-svn commit B'
to commit a single head rather than the 'git-svn commit A..B' notation
to commit multiple commits.
If you use 'git-svn commit A..B' to commit several diffs and you do not
have the latest remotes/git-svn merged into my-branch, you should use
'git rebase' to update your work branch instead of 'git pull'. 'pull'
can cause non-linear history to be flattened when committing into SVN,
which can lead to merge commits reversing previous commits in SVN.
DESIGN PHILOSOPHY DESIGN PHILOSOPHY
----------------- -----------------
Merge tracking in Subversion is lacking and doing branched development Merge tracking in Subversion is lacking and doing branched development
@ -339,6 +353,10 @@ 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 copied files are fully supported if they're similar enough for git to
detect them. detect them.
SEE ALSO
--------
gitlink:git-rebase[1]
Author Author
------ ------
Written by Eric Wong <normalperson@yhbt.net>. Written by Eric Wong <normalperson@yhbt.net>.