Code

git-svn: sort svk merge tickets to account for minimal parents
authorAlex Vandiver <alex@chmrr.net>
Sun, 29 Nov 2009 07:20:21 +0000 (02:20 -0500)
committerEric Wong <normalperson@yhbt.net>
Tue, 8 Dec 2009 04:25:40 +0000 (20:25 -0800)
When merging branches based on svk:merge properties, a single merge
can have updated or added multiple svk:merge lines.  Attempt to
include the minimal set of parents by sorting the merge properties in
order of revision, highest to lowest.

Signed-off-by: Alex Vandiver <alex@chmrr.net>
Acked-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl

index 957d44e63004cef131fca5c7dad75e7049d15842..51f03adb9ba41cb4b37158b4ea366f0444f9a3f9 100755 (executable)
@@ -2940,10 +2940,14 @@ sub find_extra_svk_parents {
                        if ( my $commit = $gs->rev_map_get($rev, $uuid) ) {
                                # wahey!  we found it, but it might be
                                # an old one (!)
-                               push @known_parents, $commit;
+                               push @known_parents, [ $rev, $commit ];
                        }
                }
        }
+       # Ordering matters; highest-numbered commit merge tickets
+       # first, as they may account for later merge ticket additions
+       # or changes.
+       @known_parents = map {$_->[1]} sort {$b->[0] <=> $a->[0]} @known_parents;
        for my $parent ( @known_parents ) {
                my @cmd = ('rev-list', $parent, map { "^$_" } @$parents );
                my ($msg_fh, $ctx) = command_output_pipe(@cmd);