diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-02-17 22:37:47 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-06-16 16:06:58 +0100 |
commit | 8538600c6a51f6b02d1db7f7171f05a9651a27e6 (patch) | |
tree | 70377587552a279263c64245469b3a3abb47b776 /git-debrebase | |
parent | 8059e776674823de7201dd917569034287249d3c (diff) |
git-debrebase: bomb on totally ambiguous pseudomerges
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'git-debrebase')
-rwxr-xr-x | git-debrebase | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/git-debrebase b/git-debrebase index cc51f77..b69450b 100755 --- a/git-debrebase +++ b/git-debrebase @@ -450,15 +450,23 @@ sub classify ($) { Contributor => $identical[0]); } if (@p == 2 && @identical == 2) { - my @bytime = nsort_by { - my ($ph,$pm) = get_commit $_->{CommitId}; + my $get_t = sub { + my ($ph,$pm) = get_commit $_[0]{CommitId}; $ph =~ m/^committer .* (\d+) [-+]\d+$/m or die "$_->{CommitId} ?"; $1; - } @p; + }; + my @bytime = @p; + my $order = $get_t->($bytime[0]) <=> $get_t->($bytime[1]); + if ($order > 0) { # newer first + } elsif ($order < 0) { + @bytime = reverse @bytime; + } else { + return $unknown->('merge of two identical same-age parents'); + } return $classify->(qw(Pseudomerge), SubType => qw(Ambiguous), - Overwritten => [ $bytime[0] ], - Contributor => $bytime[1]); + Contributor => $bytime[0], + Overwritten => [ $bytime[1] ]); } foreach my $p (@p) { my ($p_h, $p_m) = get_commit $p->{CommitId}; |