chiark / gitweb /
git-debrebase: maintain debrebase-last
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 25 Mar 2018 11:33:28 +0000 (12:33 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 15:07:00 +0000 (16:07 +0100)
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 <ijackson@chiark.greenend.org.uk>
git-debrebase
git-debrebase.5.pod

index eddbf6b6ccf101febd229008e8b312b2af3658e3..54431a7731a4718a4cb57d85a80ffb445fa724af 100755 (executable)
@@ -972,6 +972,7 @@ sub record_ffq_prev_deferred () {
     fproblems_maybe_bail();
 
     push @deferred_updates, "update $ffq_prev $currentval $git_null_obj";
     fproblems_maybe_bail();
 
     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);
 }
     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.
            # 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)";
            return;
        }
            update_head_checkout $old_head, $prev, "stitch (fast forward)";
            return;
        }
@@ -1221,6 +1223,7 @@ sub cmd_stitch () {
        'Declare fast forward / record previous work',
         "[git-debrebase pseudomerge: stitch$prose]",
     ];
        '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";
 }
 
     update_head $old_head, $new_head, "stitch";
 }
 
@@ -1312,6 +1315,7 @@ sub cmd_convert_to_gbp () {
     };
     if (defined $ffq) {
        push @deferred_updates, "delete $ffq";
     };
     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 $!;
     }
     update_head_checkout $head, $out, "convert to gbp (v0)";
     print <<END or die $!;
index fb9cff297f099d4252b639ca4bc4afc34e2cb898..dce648e84a5135475edc5267c8ec3701b064e19f 100644 (file)
@@ -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.
 
 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.
+
 =head1 OTHER MERGES
 
 Note that the representation described here does not permit
 =head1 OTHER MERGES
 
 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,
 =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,
 
 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
 and
 whose overwritten parent is ffq-prev,
 whose contributing parent to is the unstitched branch
 and
 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.
 
 Ideally the contributing parent would be a laundered branch,
 or perhaps a laundered branch with a quilt patch addition commit.