Skip to content

Commit

Permalink
git-svn: avoid self-referencing mergeinfo
Browse files Browse the repository at this point in the history
When svn.pushmergeinfo is set, the target branch is included in the
mergeinfo if it was previously merged into one of the source branches.
SVN does not do this.

Remove merge target branch path from resulting mergeinfo when
svn.pushmergeinfo is set to better match the behavior of SVN. Update the
svn-mergeinfo-push test.

[ew: 80 columns]

Signed-off-by: Michael Contreras <michael@inetric.com>
Reported-by: Avishay Lavie <avishay.lavie@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
  • Loading branch information
contrem authored and Eric Wong committed May 9, 2013
1 parent 9b79519 commit e234ac9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
11 changes: 8 additions & 3 deletions git-svn.perl
Expand Up @@ -669,12 +669,14 @@ sub merge_revs_into_hash {
}

sub merge_merge_info {
my ($mergeinfo_one, $mergeinfo_two) = @_;
my ($mergeinfo_one, $mergeinfo_two, $ignore_branch) = @_;
my %result_hash = ();

merge_revs_into_hash(\%result_hash, $mergeinfo_one);
merge_revs_into_hash(\%result_hash, $mergeinfo_two);

delete $result_hash{$ignore_branch} if $ignore_branch;

my $result = '';
# Sort below is for consistency's sake
for my $branchname (sort keys(%result_hash)) {
Expand All @@ -695,6 +697,7 @@ sub populate_merge_info {
my $all_parents_ok = 1;
my $aggregate_mergeinfo = '';
my $rooturl = $gs->repos_root;
my ($target_branch) = $gs->full_pushurl =~ /^\Q$rooturl\E(.*)/;

if (defined($rewritten_parent)) {
# Replace first parent with newly-rewritten version
Expand Down Expand Up @@ -726,7 +729,8 @@ sub populate_merge_info {
# Merge previous mergeinfo values
$aggregate_mergeinfo =
merge_merge_info($aggregate_mergeinfo,
$par_mergeinfo, 0);
$par_mergeinfo,
$target_branch);

next if $parent eq $parents[0]; # Skip first parent
# Add new changes being placed in tree by merge
Expand Down Expand Up @@ -769,7 +773,8 @@ sub populate_merge_info {
my $newmergeinfo = "$branchpath:" . join(',', @revsin);
$aggregate_mergeinfo =
merge_merge_info($aggregate_mergeinfo,
$newmergeinfo, 1);
$newmergeinfo,
$target_branch);
}
if ($all_parents_ok and $aggregate_mergeinfo) {
return $aggregate_mergeinfo;
Expand Down
1 change: 0 additions & 1 deletion t/t9161-git-svn-mergeinfo-push.sh
Expand Up @@ -88,7 +88,6 @@ test_expect_success 'check reintegration mergeinfo' '
test "$mergeinfo" = "/branches/svnb1:2-4,7-9,13-18
/branches/svnb2:3,8,16-17
/branches/svnb3:4,9
/branches/svnb4:5-6,10-12
/branches/svnb5:6,11"
'

Expand Down

0 comments on commit e234ac9

Please sign in to comment.