diff options
author | Steven Walter <swalter@lpdev.prtdev.lexmark.com> | 2010-09-02 18:32:06 -0400 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2010-09-24 08:23:53 +0000 |
commit | a3c75056dc73661a6cdab180659f52cdb03b357c (patch) | |
tree | c788c2a484ca9007c5b9918495ebaf6cfc3df844 /git-svn.perl | |
parent | c9be27f39488b20946e3a7ba57d776e03708a1fa (diff) | |
download | git-a3c75056dc73661a6cdab180659f52cdb03b357c.tar.gz |
git-svn: check_cherry_pick should exclude commits already in our history
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.
[ew: squashed and cleaned up test case from Steven]
Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/git-svn.perl b/git-svn.perl index 9b046b693f..c7c4dcdba5 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, ); |