chiark / gitweb /
dgit-repos-server: parse canonical-suite-containing tags
[dgit.git] / dgit-repos-server
index ce48eeb217f95ea7f8359db2416516af3d6cb243..8d821861d1db6b02f76fccd16e81ef92a954d6a3 100755 (executable)
@@ -241,9 +241,11 @@ sub maybeinstallprospective () {
            die;
        die if $got{$wh}++;
     }
+    $!=0; $?=0; close SR or $?==256 or die "$? $!";
+
     debug "installprospective ?";
-    die if grep { !$_ } values %got;
-    $!=0; $?=0; close SR or die "$? $!";
+    die Dumper(\%got)." -- missing refs in new repo"
+       if grep { !$_ } values %got;
 
     debug "install $destrepo => $realdestrepo";
     rename $destrepo, $realdestrepo or die $!;
@@ -309,7 +311,7 @@ sub parsetag () {
        }
     }
     $!=0; $_=<T>; defined or die $!;
-    m/^($package_re) release (\S+) for (\S+) \[dgit\]$/ or
+    m/^($package_re) release (\S+) for \S+ \((\S+)\) \[dgit\]$/ or
        reject "tag message not in expected format";
 
     die unless $1 eq $package;
@@ -512,6 +514,9 @@ sub argval () {
 sub parseargsdispatch () {
     die unless @ARGV;
 
+    delete $ENV{'GIT_DIR'}; # if not run via ssh, our parent git process
+    delete $ENV{'GIT_PREFIX'}; # sets these and they mess things up
+
     if ($ENV{'DGIT_DRS_DEBUG'}) {
        $debug='=';
        open DEBUG, ">&STDERR" or die $!;