chiark / gitweb /
git-debrebase: new-upstream-v0: support passing git-rebase options
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 31 Jan 2018 16:34:06 +0000 (16:34 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 11:25:49 +0000 (12:25 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
git-debrebase

index 8695882..b3a78ae 100755 (executable)
@@ -21,6 +21,7 @@
 #    git-debrebase new-upstreams-v0 \
 #             NEW-VERSION ORIG-COMMITISH
 #            [EXTRA-ORIG-NAME EXTRA-ORIG-COMMITISH ...]
+#            [<git-rebase options>]
 
 # usages:
 #    git-debrebase status
@@ -816,16 +817,14 @@ sub cmd_analyse () {
 }
 
 sub cmd_new_upstream_v0 () {
-    # xxx would like to support more git-rebase options
-    badusage
- "need NEW-VERSION UPS-COMMITISH [EXTRA-UPS-NAME EXTRA-UPS-COMMITISH...]"
-       unless @ARGV % 2 == 0 and @ARGV >= 2;
     # tree should be clean and this is not checked
     # automatically and unconditionally launders before rebasing
     # if rebase --abort is used, laundering has still been done
 
     my %pieces;
 
+    badusage "need NEW-VERSION UPS-COMMITTISH" unless @ARGV >= 2;
+
     # parse args - low commitment
     my $new_version = (new Dpkg::Version scalar(shift @ARGV), check => 1);
     my $new_upstream_version = $new_version->version();
@@ -853,8 +852,12 @@ sub cmd_new_upstream_v0 () {
         OldIx => 0,
         New => $new_upstream,
     );
-    while (@ARGV) {
+    while (@ARGV && $ARGV[0] !~ m{^-}) {
        my $n = shift @ARGV;
+
+        badusage "for each EXTRA-UPS-NAME need EXTRA-UPS-COMMITISH"
+            unless @ARGV && $ARGV[0] !~ m{^-};
+
        my $c = git_rev_parse shift @ARGV;
        die unless $n =~ m/^$extra_orig_namepart_re$/;
        $newpiece->($n, New => $c);
@@ -1000,7 +1003,7 @@ END
     update_head_postlaunder $old_head, $old_laundered_tip,
         'launder for new upstream';
 
-    my @cmd = (@git, qw(rebase --onto), $new_bw, $old_bw);
+    my @cmd = (@git, qw(rebase --onto), $new_bw, $old_bw, @ARGV);
     runcmd @cmd;
     # now it's for the user to sort out
 }