X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=9e2e66e4841b4adb690225fab1def69b6229df6d;hp=247b2432c2d7ab95ad07b86a498639f2bbbc61fa;hb=3ebcabbe37ce822ec10fa012b935d8de31d0cdac;hpb=175b4406b72856290aca44d0f06671a452537dfe 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';