diff options
authorIan Jackson <>2018-03-25 12:33:28 +0100
committerIan Jackson <>2018-06-16 16:07:00 +0100
commit58cd6d7cf9c2e0c5faba010744079881da008fea (patch)
parent81c93c4ce3cc0a70ee48f3f8c2081f07a481a526 (diff)
git-debrebase: maintain debrebase-last
This is mostly for the benefit of dgit(1), which wants to know whether to run gdr to do quilt fixup. Signed-off-by: Ian Jackson <>
2 files changed, 14 insertions, 2 deletions
diff --git a/git-debrebase b/git-debrebase
index eddbf6b..54431a7 100755
--- a/git-debrebase
+++ b/git-debrebase
@@ -972,6 +972,7 @@ sub record_ffq_prev_deferred () {
push @deferred_updates, "update $ffq_prev $currentval $git_null_obj";
+ push @deferred_updates, "delete $drlast";
push @deferred_update_messages, "Recorded current head for preservation";
return ('deferred', undef);
@@ -1212,6 +1213,7 @@ sub cmd_stitch () {
# ffq-prev is ahead of us, and the only tree changes it has
# are possibly addition of things in debian/patches/.
# Just wind forwards rather than making a pointless pseudomerge.
+ push @deferred_updates, "update $drlast $prev $git_null_obj";
update_head_checkout $old_head, $prev, "stitch (fast forward)";
@@ -1221,6 +1223,7 @@ sub cmd_stitch () {
'Declare fast forward / record previous work',
"[git-debrebase pseudomerge: stitch$prose]",
+ push @deferred_updates, "update $drlast $new_head $git_null_obj";
update_head $old_head, $new_head, "stitch";
@@ -1312,6 +1315,7 @@ sub cmd_convert_to_gbp () {
if (defined $ffq) {
push @deferred_updates, "delete $ffq";
+ push @deferred_updates, "delete $drlast";
update_head_checkout $head, $out, "convert to gbp (v0)";
print <<END or die $!;
diff --git a/git-debrebase.5.pod b/git-debrebase.5.pod
index fb9cff2..dce648e 100644
--- a/git-debrebase.5.pod
+++ b/git-debrebase.5.pod
@@ -257,6 +257,12 @@ the interchange and breakwater branches may be identical,
in which case the unstitched branch is fast forward
from the interchange branch and no pseudomerge is needed.
+When ffq-prev is not present,
+C<refs/debrebase-last/B> records some ancestor of refs/B,
+(usually, the result of last stitch).
+This can be used to quickly determine whether refs/B
+is being maintained in git-debrebase form.
Note that the representation described here does not permit
@@ -304,7 +310,8 @@ or both.
=item Launder branch
Record the previous tip in ffq-prev,
-if we were stitched before.
+if we were stitched before
+(and delete debrebase-last).
Reorganise the current branch so that the packaging
changes come first,
@@ -340,7 +347,8 @@ Make a pseudomerge,
whose contributing parent to is the unstitched branch
whose overwritten parent is ffq-prev,
-consuming ffq-prev in the process.
+consuming ffq-prev in the process
+(and writing debrebase-last instead).
Ideally the contributing parent would be a laundered branch,
or perhaps a laundered branch with a quilt patch addition commit.