From: Tuomas Suutari Date: Mon, 22 Feb 2010 07:57:22 GMT Subject: [PATCH 3/3] git-svn: Fix discarding of extra parents from svn:mergeinfo Message-ID: <1266825442-32107-4-git-send-email-tuomas.suutari@gmail.com> In-Reply-To: <1266825442-32107-1-git-send-email-tuomas.suutari@gmail.com> Use merge-base rather than rev-list for detecting if a parent is an ancestor of another, because rev-list gives incorrect results sometimes. Signed-off-by: Tuomas Suutari --- git-svn.perl | 8 ++++---- t/t9151-svn-mergeinfo.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 265852f..1e2bbe5 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -3268,11 +3268,11 @@ sub find_extra_svn_parents { next if $i == $j; next unless $new_parents[$i]; next unless $new_parents[$j]; - my $revs = command_oneline( - "rev-list", "-1", - "$new_parents[$i]..$new_parents[$j]", + my $mergebase = command_oneline( + "merge-base", + "$new_parents[$i]", "$new_parents[$j]", ); - if ( !$revs ) { + if ( $mergebase eq $new_parents[$i] ) { undef($new_parents[$i]); } } diff --git a/t/t9151-svn-mergeinfo.sh b/t/t9151-svn-mergeinfo.sh index 353f543..1640824 100755 --- a/t/t9151-svn-mergeinfo.sh +++ b/t/t9151-svn-mergeinfo.sh @@ -33,7 +33,7 @@ test_expect_success 'svn non-merge merge commits did not become git merge commit [ -z "$bad_non_merges" ] ' -test_expect_failure 'commit made to merged branch is reachable from the merge' ' +test_expect_success 'commit made to merged branch is reachable from the merge' ' before_commit=$(git rev-list --all --grep="trunk commit before merging trunk to b2") merge_commit=$(git rev-list --all --grep="Merge trunk to b2") not_reachable=$(git rev-list -1 $before_commit --not $merge_commit) -- 1.7.0.86.g7501