chiark / gitweb /
git-debrebase: Introduce term `anchor'
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Feb 2018 11:32:21 +0000 (11:32 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:06:58 +0000 (16:06 +0100)
And replace `breakwater merge' and `breakwater upstream merge'
everywhere.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
NOTES.git-debrebase
README.git-debrebase
git-debrebase
tests/lib-gdr

index d2b88b6..b4ffdda 100644 (file)
@@ -44,29 +44,29 @@ overall format
 [git-debrebase: split mixed commit, debian part]
 [git-debrebase: split mixed commit, upstream-part]
 [git-debrebase: convert dgit import, debian changes]
-[git-debrebase breakwater: convert dgit import, upstream changes]
+[git-debrebase anchor: convert dgit import, upstream changes]
 
 [git-debrebase upstream-combine . PIECE[ PIECE...]: new upstream]
-[git-debrebase breakwater: new upstream NEW-UPSTREAM-VERSION, merge]
+[git-debrebase anchor: new upstream NEW-UPSTREAM-VERSION, merge]
 [git-debrebase: new upstream NEW-UPSTREAM-VERSION, changelog]
 
 [git-debrebase convert-from-gbp: drop patches]
-[git-debrebase breakwater: declare upstream]
+[git-debrebase anchor: declare upstream]
 [git-debrebase pseudomerge: stitch]
 
 [git-debrebase convert-to-gbp: commit patches]
 
 m{^\[git-debrebase (?:\w*-)?upstream combine \.((?: $extra_orig_namepart_re)+)\]}
 
-Every breakwater commit must be a merge.  In principle, this is not
+Every anchor commit must be a merge.  In principle, this is not
 necessary.  After all, we are relying on the
-    [git-debrebase breakwater: ...]
-commit message annotation in "declare" breakwater merges (which
-do not have any upstream changes), to distinguish those breakwater
+    [git-debrebase anchor: ...]
+commit message annotation in "declare" anchor merges (which
+do not have any upstream changes), to distinguish those anchor
 merges from ordinary pseudomerges (which we might just try to strip).
 
 However, the user is going to be doing git-rebase a lot.  We really
-don't want them to rewrite a breakwater base commit.  git-rebase
+don't want them to rewrite an anchor commit.  git-rebase
 trips up on merges, so that is a useful safety catch.
 
 
@@ -267,7 +267,7 @@ import from gbp
      new breakwater is
        old HEAD
        commit to remove d/patches
-       breakwater pseudomerge with upstream
+       anchor merge with upstream
        "rebase" of pq branch, each commit with d/patches stripped
 ]
 
index 9efdc1a..48ddd54 100644 (file)
@@ -24,7 +24,7 @@ with a series of pseudomerges to make it fast-forwarding.
       B3      mixed commit (eg made by an NMUer)
       #       upstream releases
 
-     -p-      special merge, takes contents of debian/ from the
+     -p-      anchor merge, takes contents of debian/ from the
      /         previous `breakwater' commit and rest from upstream
 
      -/-      pseudomerge; contents are identical to
index 2b65846..b9f36ca 100755 (executable)
@@ -330,10 +330,12 @@ sub any_fproblems () {
 #     has additional entry in classification result
 #       OrigParents = [ subset of Parents ]
 #
-#   BreakwaterUpstreamMerge
+#   Anchor
 #     has additional entry in classification result
 #       OrigParents = [ subset of Parents ]  # singleton list
 #
+#   BreakwaterStart
+#
 #   Unknown
 #     has additional entry in classification result
 #       Why => "prose"
@@ -400,12 +402,12 @@ sub classify ($) {
        return $r;
     };
 
-    my $claims_to_be_breakwater =
-       $r->{Msg} =~ m{^\[git-debrebase breakwater.*\]$}m;
+    my $claims_to_be_anchor =
+       $r->{Msg} =~ m{^\[git-debrebase anchor.*\]$}m;
 
     if (@p == 1) {
-       if ($claims_to_be_breakwater) {
-           return $unknown->("single-parent git-debrebase breakwater \`merge'");
+       if ($claims_to_be_anchor) {
+           return $unknown->("single-parent git-debrebase anchor \`merge'");
        }
        my $d = $r->{Parents}[0]{Differs};
        if ($d == D_PAT_ADD) {
@@ -440,8 +442,8 @@ sub classify ($) {
     }
 
     my @identical = grep { !$_->{Differs} } @p;
-    if (@p == 2 && @identical == 1 && !$claims_to_be_breakwater
-       # breakwater merges can look like pseudomerges, if they are
+    if (@p == 2 && @identical == 1 && !$claims_to_be_anchor
+       # anchor merges can look like pseudomerges, if they are
        # "declare" commits (ie, there are no upstream changes)
        ) {
        my @overwritten = grep { $_->{Differs} } @p;
@@ -488,7 +490,7 @@ sub classify ($) {
     my ($stype, $series) = git_cat_file "$t:debian/patches/series";
     my $haspatches = $stype ne 'missing' && $series =~ m/^\s*[^#\n\t ]/m;
 
-    # How to decide about l/r ordering of breakwater merges ?  git
+    # How to decide about l/r ordering of anchors ?  git
     # --topo-order prefers to expand 2nd parent first.  There's
     # already an easy rune to look for debian/ history anyway (git log
     # debian/) so debian breakwater branch should be 1st parent; that
@@ -496,9 +498,9 @@ sub classify ($) {
     # patches (--topo-order).
 
     # The above tells us which way *we* will generate them.  But we
-    # might encounter ad-hoc breakwater merges generated manually,
+    # might encounter ad-hoc anchor merges generated manually,
     # which might be the other way around.  In principle, in some odd
-    # situations, a breakwater merge might have two identical parents.
+    # situations, an anchor merge might have two identical parents.
     # In that case we guess which way round it is (ie, which parent
     # has the upstream history).  The order of the 2-iteration loop
     # controls which guess we make.
@@ -509,12 +511,12 @@ sub classify ($) {
            !$p[$prevbrw]{IsOrigin} && # breakwater never starts with an origin
            !($p[!$prevbrw]{Differs} & ~DS_DEB) && # no non-debian changess
            !($p[$prevbrw]{Differs} & ~D_UPS)) { # no non-upstream changes
-           return $classify->(qw(BreakwaterUpstreamMerge),
+           return $classify->(qw(Anchor),
                               OrigParents => [ $p[!$prevbrw] ]);
        }
     }
 
-    # multi-orig upstreams are represented with a breakwater merge
+    # multi-orig upstreams are represented with an anchor merge
     # from a single upstream commit which combines the orig tarballs
 
     return $unknown->("complex merge");
@@ -533,7 +535,7 @@ sub breakwater_of ($) {
        if ($ty eq 'Packaging' or
            $ty eq 'Changelog') {
            $breakwater //= $head;
-       } elsif ($ty eq 'BreakwaterUpstreamMerge' or
+       } elsif ($ty eq 'Anchor' or
                 $ty eq 'BreakwaterStart') {
            $breakwater //= $head;
            last;
@@ -560,7 +562,7 @@ sub walk ($;$$);
 sub walk ($;$$) {
     my ($input,
        $nogenerate,$report) = @_;
-    # => ($tip, $breakwater_tip, $last_upstream_merge_in_breakwater)
+    # => ($tip, $breakwater_tip, $last_anchor)
     # (or nothing, if $nogenerate)
 
     printdebug "*** WALK $input ".($nogenerate//0)." ".($report//'-')."\n";
@@ -622,7 +624,7 @@ sub walk ($;$$) {
        no warnings qw(exiting); last;
     };
 
-    my $last_upstream_update;
+    my $last_anchor;
 
     for (;;) {
        $cl = classify $cur;
@@ -641,7 +643,7 @@ sub walk ($;$$) {
            $cur = $p0;
            next;
        } elsif ($ty eq 'BreakwaterStart') {
-            $last_upstream_update = $cur;
+            $last_anchor = $cur;
            $build_start->('FirstPackaging', $cur);
        } elsif ($ty eq 'Upstream') {
            push @upp_cl, $cl;
@@ -665,9 +667,9 @@ sub walk ($;$$) {
            $rewrite_from_here->();
            $cur = $contrib;
            next;
-       } elsif ($ty eq 'BreakwaterUpstreamMerge') {
-            $last_upstream_update = $cur;
-           $build_start->("PreviousBreakwater", $cur);
+       } elsif ($ty eq 'Anchor') {
+            $last_anchor = $cur;
+           $build_start->("Anchor", $cur);
        } elsif ($ty eq 'DgitImportUnpatched') {
            my $pm = $pseudomerges[-1];
            if (defined $pm) {
@@ -708,7 +710,7 @@ sub walk ($;$$) {
                    %$cl,
                    SpecialMethod => 'DgitImportUpstreamUpdate',
                     $xmsg->("convert dgit import: upstream update",
-                           " breakwater")
+                           " anchor")
                };
                $prline->(" Import");
                $rewrite_from_here->();
@@ -829,7 +831,7 @@ sub walk ($;$$) {
            confess "$ch ?" unless $rewriting or $newcommit eq $cl->{CommitId};
            $build = $newcommit;
             if (grep { $method eq $_ } qw(DgitImportUpstreamUpdate)) {
-                $last_upstream_update = $cur;
+                $last_anchor = $cur;
             }
        }
     };
@@ -838,7 +840,7 @@ sub walk ($;$$) {
     die sprintf "internal error %#x %s %s", $final_check, $build, $input
        if $final_check & ~D_PAT_ADD;
 
-    my @r = ($build, $breakwater, $last_upstream_update);
+    my @r = ($build, $breakwater, $last_anchor);
     printdebug "*** WALK RETURN @r\n";
     return @r
 }
@@ -871,11 +873,11 @@ sub update_head_postlaunder ($$$) {
 sub cmd_launder () {
     badusage "no arguments to launder allowed" if @ARGV;
     my $old = get_head();
-    my ($tip,$breakwater,$last_upstream_merge) = walk $old;
+    my ($tip,$breakwater,$last_anchor) = walk $old;
     update_head_postlaunder $old, $tip, 'launder';
     printf "# breakwater tip\n%s\n", $breakwater;
     printf "# working tip\n%s\n", $tip;
-    printf "# last upstream merge\n%s\n", $last_upstream_merge;
+    printf "# last anchor\n%s\n", $last_anchor;
 }
 
 sub defaultcmd_rebase () {
@@ -1128,14 +1130,14 @@ sub cmd_new_upstream_v0 () {
 
        # $new_upstream is either the single upstream commit, or the
        # combined commit we just made.  Either way it will be the
-       # "upstream" parent of the breakwater special merge.
+       # "upstream" parent of the anchor merge.
 
        read_tree_subdir 'debian', "$old_bw:debian";
 
-       # index now contains the breakwater merge contents
+       # index now contains the anchor merge contents
         $new_bw = make_commit [ $old_bw, $new_upstream ],
             [ "Update to upstream $new_upstream_version",
- "[git-debrebase breakwater: new upstream $new_upstream_version, merge]",
+ "[git-debrebase anchor: new upstream $new_upstream_version, merge]",
             ];
 
        # Now we have to add a changelog stanza so the Debian version
@@ -1280,12 +1282,12 @@ sub cmd_convert_from_gbp () {
  'Delete debian/patches, as part of converting to git-debrebase format.',
  '[git-debrebase convert-from-gbp: drop patches from tree]'
                              ];
-       # make the breakwater pseudomerge
+       # make the anchor merge
        # the tree is already exactly right
        $work = make_commit [$work, $upstream], [
  'git-debrebase import: declare upstream',
  'First breakwater merge.',
- '[git-debrebase breakwater: declare upstream]'
+ '[git-debrebase anchor: declare upstream]'
                              ];
 
        # rebase the patch queue onto the new breakwater
index de365a2..565e0b1 100644 (file)
@@ -55,8 +55,8 @@ t-gdr-good () {
                Changelog/Packaging)                    ;;
                Changelog/Upstream)                     ;;
                Upstream/SAME)                          ;;
-               BreakwaterUpstreamMerge/Upstream)       ;;
-               BreakwaterUpstreamMerge/Packaging)      ;;
+               Anchor/Upstream)                        ;;
+               Anchor/Packaging)                       ;;
                *)
                        fail "etype=$etype ctype=$ctype cetype=$cetype $cid"
                        ;;
@@ -98,7 +98,7 @@ t-gdr-good () {
                Upstream/SAME)
                        git diff --quiet $expect..$cid -- ':debian'
                        ;;
-               BreakwaterUpstreamMerge)
+               Anchor)
                        break
                        ;;
                esac