From: Steven Walter Date: Thu, 02 Sep 2010 22:32:06 GMT Subject: [PATCH] git-svn: check_cherry_pick should exclude commits already in our history Message-ID: <1283466726-12643-1-git-send-email-stevenrwalter@gmail.com> In-Reply-To: <20100902214707.GA2761@dcvr.yhbt.net> From: Steven Walter The merge-base between @$parents and $merge_tip may have been reached through a merge commit. This means that some commits that are ancestors of @$parents will not be ancestors of $merge_base. The mergeinfo property will not list commits that are ancestors of @$parents, so we need to explicitly exclude them. Signed-off-by: Steven Walter Acked-by: Eric Wong --- git-svn.perl | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 9b046b6..c7c4dcd 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -3118,9 +3118,10 @@ sub _rev_list { sub check_cherry_pick { my $base = shift; my $tip = shift; + my $parents = shift; my @ranges = @_; my %commits = map { $_ => 1 } - _rev_list("--no-merges", $tip, "--not", $base); + _rev_list("--no-merges", $tip, "--not", $base, @$parents); for my $range ( @ranges ) { delete @commits{_rev_list($range)}; } @@ -3296,6 +3297,7 @@ sub find_extra_svn_parents { # double check that there are no missing non-merge commits my (@incomplete) = check_cherry_pick( $merge_base, $merge_tip, + $parents, @$ranges, ); -- 1.7.0.4