summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-25 14:48:41 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2016-09-26 01:36:22 +0100
commit6a009a8fe0fa46c0d92d51300566c7afcf21ed2e (patch)
tree294b6334976cf711fe5eda17162a11fc18fbf402
parent9103f4a18a893971b6ab8fab4c1ac4c98729eecb (diff)
Overwrite: Provide --overwrite=VERSION option
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rw-r--r--TODO.BRANCH10
-rwxr-xr-xdgit3
-rw-r--r--dgit.122
3 files changed, 25 insertions, 10 deletions
diff --git a/TODO.BRANCH b/TODO.BRANCH
index 7d39b29..141a3aa 100644
--- a/TODO.BRANCH
+++ b/TODO.BRANCH
@@ -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
--- 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
--- 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 .