chiark / gitweb /
Overwrite: Provide --overwrite=VERSION option
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 25 Sep 2016 13:48:41 +0000 (14:48 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 Sep 2016 00:36:22 +0000 (01:36 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
TODO.BRANCH
dgit
dgit.1

index 7d39b29..141a3aa 100644 (file)
@@ -1,14 +1,4 @@
 
- - in dopush (?), we need to sort out synthetic fast forard
-    this should not depend entirely on quilt mode
-    but will always be needed if quiltmode_splitbrain
-
-    We want a --overwrite=VERSION option which 1. adjusts
-    the version used above, and 2. does the same thing in any
-    quilt mode.  If no split brain it should make the pseudomerge
-    on the user's HEAD.
-
-
 SPLIT BRAIN
 
   * Check archive allegedly supports split brain mode before running
diff --git a/dgit b/dgit
index c0d2183..2bd938e 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -4561,6 +4561,9 @@ sub parseopts () {
            } elsif (m/^--no-rm-on-error$/s) {
                push @ropts, $_;
                $rmonerror = 0;
+           } elsif (m/^--overwrite=(.*)$/s) {
+               push @ropts, $_;
+               $overwrite_version = $1;
            } elsif (m/^--(no-)?rm-old-changes$/s) {
                push @ropts, $_;
                $rmchanges = !$1;
diff --git a/dgit.1 b/dgit.1
index 87ad0fc..8769f72 100644 (file)
--- a/dgit.1
+++ b/dgit.1
@@ -330,6 +330,28 @@ This can be useful with build, if you plan to commit later.  (dgit
 push will still ensure that the .dsc you upload and the git tree
 you push are identical, so this option won't make broken pushes.)
 .TP
+.BI --overwrite= previous-version
+Declare that even though your git branch is not a descendant of
+.IR previous-version
+according to the revision history, in fact, it really does contain
+all the (wanted) changes from that version.
+.I previous-version
+ought to be the version currently in the archive.
+
+dgit push will make a
+pseudo-merge (that is, something that looks like the result
+of git merge -s ours) to stitch the archive's version into your own
+git history, so that your push is a fast forward from the archive.
+
+This option is useful if you are the maintainer, and you have
+incorporated NMU changes into your own git workflow in way that
+doesn't make your branch a fast forward from the NMU.
+
+(In quilt mode
+.BR gbp ", " dpm " or " unpatched ,
+implying a split between the dgit view and the
+maintainer view, the pseudo-merge will appear only in the dgit view.)
+.TP
 .BI --deliberately- something
 Declare that you are deliberately doing
 .IR something .