From b4fb53aea490a1e6e401712bc23cc790638e1dcc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 19 Jul 2015 15:50:57 +0100 Subject: [PATCH] Make readonly vs push configurable --- dgit | 22 +++++++++++++++++++--- dgit.1 | 8 ++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/dgit b/dgit index 247b2432..9e2e66e4 100755 --- a/dgit +++ b/dgit @@ -547,16 +547,31 @@ sub access_quirk () { return ('none',undef); } -our $access_forpush = 0; +our $access_forpush; -sub pushing () { - $access_forpush = 1; +sub access_forpush_config () { + my $d = access_basedistro(); + my $v = cfg("dgit-distro.$d.readonly", 'RETURN-UNDEF'); + $v //= 'a'; + return + $v =~ m/^[ty1]/ ? 0 : # force readonly, forpush = 0 + $v =~ m/^[fn0]/ ? 1 : # force nonreadonly, forpush = 1 + $v =~ m/^[a]/ ? '' : # auto, forpush = '' + badcfg "readonly needs t (true, y, 1) or f (false, n, 0) or a (auto)"; } sub access_forpush () { + $access_forpush //= access_forpush_config(); return $access_forpush; } +sub pushing () { + die "$access_forpush ?" if ($access_forpush // 1) ne 1; + badcfg "pushing but distro is configured readonly" + if access_forpush_config() eq '0'; + $access_forpush = 1; +} + sub access_distros () { # Returns list of distros to try, in order # @@ -3041,6 +3056,7 @@ my $cmd = shift @ARGV; $cmd =~ y/-/_/; if (!defined $quilt_mode) { + local $access_forpush; $quilt_mode = cfg('dgit.force.quilt-mode', 'RETURN-UNDEF') // access_cfg('quilt-mode', 'RETURN-UNDEF') // 'linear'; diff --git a/dgit.1 b/dgit.1 index 3e402e19..dd083ac5 100644 --- a/dgit.1 +++ b/dgit.1 @@ -597,6 +597,14 @@ on the dgit command line. .TP .BI dgit.default.distro .TP +.BR dgit-distro. \fIdistro\fR .readonly " " auto | true | false +.TP +.BR dgit-distro. \fIdistro\fR /push. * +If set, overrides corresponding non \fB/push\fR config when +.BR readonly=false , +or when pushing and +.BR readonly=auto . +.TP .BI dgit-distro. distro .username .TP .BI dgit-distro. distro .git-url -- 2.30.2