From 7faed22010cacb9bd7cc029b860840947e03bf8a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 18 Feb 2018 11:32:21 +0000 Subject: [PATCH] git-debrebase: Introduce term `anchor' And replace `breakwater merge' and `breakwater upstream merge' everywhere. Signed-off-by: Ian Jackson --- NOTES.git-debrebase | 18 ++++++------- README.git-debrebase | 2 +- git-debrebase | 60 +++++++++++++++++++++++--------------------- tests/lib-gdr | 6 ++--- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/NOTES.git-debrebase b/NOTES.git-debrebase index d2b88b6f..b4ffdda2 100644 --- a/NOTES.git-debrebase +++ b/NOTES.git-debrebase @@ -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 ] diff --git a/README.git-debrebase b/README.git-debrebase index 9efdc1ac..48ddd549 100644 --- a/README.git-debrebase +++ b/README.git-debrebase @@ -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 diff --git a/git-debrebase b/git-debrebase index 2b658463..b9f36ca5 100755 --- a/git-debrebase +++ b/git-debrebase @@ -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 diff --git a/tests/lib-gdr b/tests/lib-gdr index de365a24..565e0b16 100644 --- a/tests/lib-gdr +++ b/tests/lib-gdr @@ -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 -- 2.30.2