chiark / gitweb /
git-debrebase: comment: explain why tagged linear anchors are evil
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 22 Apr 2018 17:54:31 +0000 (18:54 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:07:01 +0000 (16:07 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index fcca5b1ad6b0cb4bb4ee893bf7b61b8216a79bbe..524631787575bb459556a696c92850e040a8b970 100755 (executable)
@@ -396,6 +396,15 @@ sub classify ($) {
        # BreakwaterStart commits are also anchors in the terminology
        # of git-debrebase(5), but they are untagged (and always
        # manually generated).
+       #
+       # We cannot not tolerate any tagged linear commit (ie,
+       # BreakwaterStart commits tagged `[anchor:') because such a
+       # thing could result from an erroneous linearising raw git
+       # rebase of a merge anchor.  That would represent a corruption
+       # of the branch. and we want to detect and reject the results
+       # of such corruption before it makes it out anywhere.  If we
+       # reject it here then we avoid making the pseudomerge which
+       # would be needed to push it.
 
        my $badanchor = sub { $unknown->("git-debrebase \`anchor' but @_"); };
        @p == 2 or return $badanchor->("has other than two parents");