From 8538600c6a51f6b02d1db7f7171f05a9651a27e6 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 17 Feb 2018 22:37:47 +0000 Subject: [PATCH] git-debrebase: bomb on totally ambiguous pseudomerges Signed-off-by: Ian Jackson --- git-debrebase | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/git-debrebase b/git-debrebase index cc51f775..b69450ba 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}; -- 2.30.2