提交 b9dffd8c 编写于 作者: E Eric Wong

git-svn: --follow-parent tracks multi-parent paths

We can have a branch that was deleted, then re-added under the
same name but copied from another path, in which case we'll have
multiple parents (we don't want to break the original ref, nor
lose copypath info).

Add a test for this, too, of course.
Signed-off-by: NEric Wong <normalperson@yhbt.net>
上级 e518192f
...@@ -1266,11 +1266,19 @@ sub do_fetch { ...@@ -1266,11 +1266,19 @@ sub do_fetch {
my ($self, $paths, $rev) = @_; my ($self, $paths, $rev) = @_;
my $ed; my $ed;
my ($last_rev, @parents); my ($last_rev, @parents);
if ($self->last_commit) { if (my $lc = $self->last_commit) {
# we can have a branch that was deleted, then re-added
# under the same name but copied from another path, in
# which case we'll have multiple parents (we don't
# want to break the original ref, nor lose copypath info):
if (my $log_entry = $self->find_parent_branch($paths, $rev)) {
push @{$log_entry->{parents}}, $lc;
return $log_entry;
}
$ed = SVN::Git::Fetcher->new($self); $ed = SVN::Git::Fetcher->new($self);
$last_rev = $self->{last_rev}; $last_rev = $self->{last_rev};
$ed->{c} = $self->{last_commit}; $ed->{c} = $lc;
@parents = ($self->{last_commit}); @parents = ($lc);
} else { } else {
$last_rev = $rev; $last_rev = $rev;
if (my $log_entry = $self->find_parent_branch($paths, $rev)) { if (my $log_entry = $self->find_parent_branch($paths, $rev)) {
......
...@@ -146,6 +146,13 @@ test_expect_success "track initial change if it was only made to parent" " ...@@ -146,6 +146,13 @@ test_expect_success "track initial change if it was only made to parent" "
\"\`git rev-parse r9270-d~1\`\" \"\`git rev-parse r9270-d~1\`\"
" "
test_expect_success "track multi-parent paths" "
svn cp -m 'resurrect /glob' $svnrepo/r9270 $svnrepo/glob &&
git-svn multi-fetch --follow-parent &&
test \`git cat-file commit refs/remotes/glob | \
grep '^parent ' | wc -l\` -eq 2
"
test_expect_success "multi-fetch continues to work" " test_expect_success "multi-fetch continues to work" "
git-svn multi-fetch --follow-parent git-svn multi-fetch --follow-parent
" "
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册