chiark / gitweb /
--new is needed for read access to packages in NEW, too. Document this, and make...
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Jul 2015 17:57:08 +0000 (18:57 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 21 Jul 2015 17:57:08 +0000 (18:57 +0100)
debian/changelog
dgit
dgit.1

index 1d11dcae7653cab257040c6185af32ff0cfe8865..4a0765a37c33969ecc1c48673acd1cd47ceff528 100644 (file)
@@ -23,6 +23,8 @@ dgit (1.1) unstable; urgency=low
   * dgit(7): No longer say that dgit-repos lives on Alioth.
   * Infrastructure: Get mirroring right for fresh repos of existing
     packages (!)
+  * --new is needed for read access to packages in NEW, too.  Document
+    this, and make it work properly.
 
  --
 
diff --git a/dgit b/dgit
index 9e2e66e4841b4adb690225fab1def69b6229df6d..1e389088fd10f7c2d97ae885cae0a8889afdb93a 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -446,6 +446,7 @@ our %defcfg = ('dgit.default.distro' => 'debian',
               'dgit-distro.debian.archive-query' => 'ftpmasterapi:',
               'dgit-distro.debian.git-check' => 'url',
               'dgit-distro.debian.git-check-suffix' => '/info/refs',
+              'dgit-distro.debian.new-private-pushers' => 't',
               'dgit-distro.debian/push.git-url' => '',
               'dgit-distro.debian/push.git-host' => 'push.dgit.debian.org',
               'dgit-distro.debian/push.git-user-force' => 'dgit',
@@ -549,8 +550,24 @@ sub access_quirk () {
 
 our $access_forpush;
 
+sub parse_cfg_bool ($$$) {
+    my ($what,$def,$v) = @_;
+    $v //= $def;
+    return
+       $v =~ m/^[ty1]/ ? 1 :
+       $v =~ m/^[fn0]/ ? 0 :
+       badcfg "$what needs t (true, y, 1) or f (false, n, 0) not \`$v'";
+}      
+
 sub access_forpush_config () {
     my $d = access_basedistro();
+
+    return 1 if
+       $new_package &&
+       parse_cfg_bool('new-private-pushers', 0,
+                      cfg("dgit-distro.$d.new-private-pushers",
+                          'RETURN-UNDEF'));
+
     my $v = cfg("dgit-distro.$d.readonly", 'RETURN-UNDEF');
     $v //= 'a';
     return
diff --git a/dgit.1 b/dgit.1
index 0e38149f2458cd251eb6af3886c462c8f7982c07..77d325204d61b1397e4c7fd0c3ff09c1f6b621a3 100644 (file)
--- a/dgit.1
+++ b/dgit.1
@@ -306,8 +306,10 @@ The build-dependencies are not checked (due to
 which violates policy, but may work in practice.
 .TP
 .BR -N " | " --new
-The package may be new in this suite.  Without this, dgit will
-refuse to push.
+The package is or may be new in this suite.  Without this, dgit will
+refuse to push.  It may (for Debian, will) be unable to access the git
+history for any packages which have been newly pushed and have not yet
+been published.
 .TP
 .BR --ignore-dirty
 Do not complain if the working tree does not match your git HEAD.