From b4fb53aea490a1e6e401712bc23cc790638e1dcc Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 19 Jul 2015 15:50:57 +0100 Subject: Make readonly vs push configurable --- dgit | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'dgit') diff --git a/dgit b/dgit index 247b243..9e2e66e 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'; -- cgit v1.2.3