chiark / gitweb /
dgit: Support split view in non-splitting quilt modes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Jun 2019 10:49:17 +0000 (11:49 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 28 Jun 2019 15:59:49 +0000 (16:59 +0100)
Provide --split-view|brain=auto|always|never and the corresponding
access cfg option .split-view.

This is not documented or tested yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
dgit

diff --git a/dgit b/dgit
index f79e3cfa344bd8d31a4e07346d7ec7dac125313c..51bd648252ac65713b8bafe816a90e017730eab6 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -80,6 +80,8 @@ our $rmchanges;
 our $overwrite_version; # undef: not specified; '': check changelog
 our $quilt_mode;
 our $quilt_modes_re = 'linear|smash|auto|nofix|nocheck|gbp|dpm|unapplied';
+our $splitview_mode;
+our $splitview_modes_re = qr{auto|always|never};
 our $dodep14tag;
 our %internal_object_save;
 our $we_are_responder;
@@ -969,8 +971,21 @@ sub notpushing () {
 
 sub determine_whether_split_brain () {
     my ($format,) = get_source_format();
+
+    {
+       local $access_forpush;
+       default_from_access_cfg(\$splitview_mode, 'split-view', 'auto',
+                               $splitview_modes_re);
+       $do_split_brain = 1 if $splitview_mode eq 'always';
+    }
+
     printdebug "format $format, quilt mode $quilt_mode\n";
+
     if (madformat_wantfixup($format) && quiltmode_splitting()) {
+       $splitview_mode ne 'never' or
+           fail f_ "dgit: quilt mode \`%s' (for format \`%s')".
+                   " implies split view, but split-view set to \`%s'",
+                   $quilt_mode, $format, $splitview_mode;
        $do_split_brain = 1;
     }
     $do_split_brain //= 0;
@@ -7324,6 +7339,12 @@ sub parseopts () {
            } elsif (m/^--overwrite$/s) {
                push @ropts, $_;
                $overwrite_version = '';
+           } elsif (m/^--split-(?:view|brain)$/s) {
+               push @ropts, $_;
+               $splitview_mode = 'always';
+           } elsif (m/^--split-(?:view|brain)=($splitview_modes_re)$/s) {
+               push @ropts, $_;
+               $splitview_mode = $1;
            } elsif (m/^--overwrite=(.+)$/s) {
                push @ropts, $_;
                $overwrite_version = $1;