提交 e234ac9d 编写于 作者: M Michael Contreras 提交者: Eric Wong

git-svn: avoid self-referencing mergeinfo

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: NMichael Contreras <michael@inetric.com>
Reported-by: NAvishay Lavie <avishay.lavie@gmail.com>
Acked-by: NEric Wong <normalperson@yhbt.net>
上级 9b795193
......@@ -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)) {
......@@ -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
......@@ -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
......@@ -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;
......
......@@ -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"
'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册