chiark / gitweb /
dgit-repos-server: do drs-error and recorderror, not just for reject
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 29 Jan 2014 19:03:13 +0000 (19:03 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 5 Mar 2014 18:29:06 +0000 (18:29 +0000)
dgit-repos-server

index 11e4569..6acd689 100755 (executable)
@@ -149,19 +149,21 @@ sub mkrepotmp () {
     die $!;
 }
 
-sub recordreject ($) {
+sub recorderror ($) {
     my ($why) = @_;
     my $w = $ENV{'DGIT_DRS_WORK'}; # we are in stunthook
     if (defined $w) {
-       open REJ, ">", "$w/drs-reject" or die $!;
-       print REJ $why, "\n" or die $!;
-       close REJ or die $!;
+       open ERR, ">", "$w/drs-error" or die $!;
+       print ERR $why, "\n" or die $!;
+       close ERR or die $!;
+       return 1;
     }
+    return 0;
 }
 
 sub reject ($) {
     my ($why) = @_;
-    recordreject $why;
+    recorderror "reject: $why";
     die "dgit-repos-server: reject: $why\n";
 }
 
@@ -218,10 +220,12 @@ END
 sub maybeinstallprospective () {
     return if $destrepo eq $realdestrepo;
 
-    if (open REJ, "<", "$workrepo/drs-reject") {
-       $!=0; my $why = <REJ>;
-       chomp $why or die $!;
-       reject $why;
+    if (open REJ, "<", "$workrepo/drs-error") {
+       local $/ = undef;
+       my $msg = <REJ>;
+       REJ->error and die $!;
+       print STDERR $msg;
+       exit 1;
     } else {
        $!==&ENOENT or die $!;
     }