X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=infra%2Fdgit-repos-server;h=634f91edab17ee52103433f1e1790f3f92b14dba;hb=89dfd17c9cd0a9c030083a5530ac816987431187;hp=63f9aac081df8284e08c4b8ae9304d4114ab9a8e;hpb=cb5dfd5817329930d923aa005d6cf3b9c424656d;p=dgit.git diff --git a/infra/dgit-repos-server b/infra/dgit-repos-server index 63f9aac0..634f91ed 100755 --- a/infra/dgit-repos-server +++ b/infra/dgit-repos-server @@ -263,7 +263,7 @@ sub runcmd { debugcmd '+',@_; $!=0; $?=0; my $r = system @_; - die "@_ $? $!" if $r; + die (shellquote @_)." $? $!" if $r; } sub policyhook { @@ -274,8 +274,9 @@ sub policyhook { debugcmd '+',@cmd; my $r = system @cmd; die "system: $!" if $r < 0; - die "hook (@cmd) failed ($?)" if $r & ~($policyallowbits << 8); - printdebug sprintf "hook (%s) => %#x\n", "@polargs", $r; + die "hook (".(shellquote @cmd).") failed ($?)" + if $r & ~($policyallowbits << 8); + printdebug sprintf "hook => %#x\n", $r; return $r >> 8; } @@ -300,15 +301,21 @@ sub movetogarbage () { # purposes (and, I guess, recovery from mistakes). This is either # $garbage or $garbage-old. if (stat_exists "$garbagerepo") { + printdebug "movetogarbage: rmtree $garbagerepo-tmp\n"; rmtree "$garbagerepo-tmp"; if (rename "$garbagerepo-old", "$garbagerepo-tmp") { + printdebug "movetogarbage: $garbagerepo-old -> -tmp, rmtree\n"; rmtree "$garbagerepo-tmp"; } else { die "$garbagerepo $!" unless $!==ENOENT; + printdebug "movetogarbage: $garbagerepo-old -> -tmp\n"; } + printdebug "movetogarbage: $garbagerepo -> -old\n"; rename "$garbagerepo", "$garbagerepo-old" or die "$garbagerepo $!"; } - rename realdestrepo, $garbagerepo + my $real = realdestrepo; + printdebug "movetogarbage: $real -> $garbagerepo\n"; + rename $real, $garbagerepo or $! == ENOENT or die "$garbagerepo $!"; } @@ -889,7 +896,7 @@ sub parseargsdispatch () { if ($ARGV[0] eq '--pre-receive-hook') { if ($debuglevel) { $debugprefix.="="; - printdebug "in stunthook @ARGV\n"; + printdebug "in stunthook ".(shellquote @ARGV)."\n"; foreach my $k (sort keys %ENV) { printdebug "$k=$ENV{$k}\n" if $k =~ m/^DGIT/; }