git-svn: Make following parents atomic
authorDeskin Miller <deskinm@umich.edu>
Mon, 8 Dec 2008 13:31:31 +0000 (08:31 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Dec 2008 00:29:34 +0000 (16:29 -0800)
commit553589f7823db530d03b49db42251fbea624041f
treec99bcfc4a98d0e021580636cf3f342429649e529
parent1c2ed59de2d14ad6ee9daa4d4f7254297d9a3830
git-svn: Make following parents atomic

find_parent_branch generates branch@rev type branches when one has to
look back through SVN history to properly get the history for a branch
copied from somewhere not already being tracked by git-svn.  If in the
process of fetching this history, git-svn is interrupted, then when one
fetches again, it will use whatever was last fetched as the parent
commit and fail to fetch any more history which it didn't get to before
being terminated.  This is especially troubling in that different
git-svn copies of the same SVN repository can end up with different
commit sha1s, incorrectly showing the history as divergent and
precluding easy collaboration using git push and fetch.

To fix this, when we initialise the Git::SVN object $gs to search for
and perhaps fetch history, we check if there are any commits in SVN in
the range between the current revision $gs is at, and the top revision
for which we were asked to fill history.  If there are commits we're
missing in that range, we continue the fetch from the current revision
to the top, properly getting all history before using it as the parent
for the branch we're trying to create.

Signed-off-by: Deskin Miller <deskinm@umich.edu>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-svn.perl
t/t9104-git-svn-follow-parent.sh