chiark / gitweb /
git-debrebase: Some notes on anchor parent ordering
[dgit.git] / git-debrebase
index ad501d8a9f3f2d59678af0cd567b162380ce14a7..d174fe60fbe2ba71b75c6d3e077d2d47b156b233 100755 (executable)
@@ -427,6 +427,23 @@ sub classify ($) {
        # way also there's also an easy rune to look for the upstream
        # patches (--topo-order).
 
+       # Also this makes --first-parent be slightly more likely to
+       # be useful - it makes it provide a linearised breakwater history.
+
+       # Of course one can say somthing like
+       #  gitk -- ':/' ':!/debian'
+       # to get _just_ the commits touching upstream files, and by
+       # the TREESAME logic in git-rev-list this will leave the
+       # breakwater into upstream at the first anchor.  But that
+       # doesn't report debian/ changes at all.
+
+       # Other observations about gitk: by default, gitk seems to
+       # produce output in a different order to git-rev-list.  I
+       # can't seem to find this documented anywhere.  gitk
+       # --date-order DTRT.  But, gitk always seems to put the
+       # parents from left to right, in order, so it's easy to see
+       # which way round a pseudomerge is.
+
        $p[0]{IsOrigin} and $badanchor->("is an origin commit");
        $p[1]{Differs} & ~DS_DEB and
            $badanchor->("upstream files differ from left parent");
@@ -1086,6 +1103,8 @@ sub stitch ($$$$$) {
        }
     }
     fresh_workarea();
+    # We make pseudomerges with L as the contributing parent.
+    # This makes git rev-list --first-parent work properly.
     my $new_head = make_commit [ $old_head, $ffq_prev ], [
        'Declare fast forward / record previous work',
         "[git-debrebase pseudomerge: $prose]",