X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit-repos-server;h=aaa754207ab91701fda9ba899bface80a25e1eb8;hp=aab35d32051094785fd4e7765a5aa656fbe53280;hb=35ab9a12809f8a2ac86274e76612a9960c5bead2;hpb=fb6ff2e818203ba2b02f4d4d3b2eb57c77ba74c0 diff --git a/dgit-repos-server b/dgit-repos-server index aab35d32..aaa75420 100755 --- a/dgit-repos-server +++ b/dgit-repos-server @@ -133,6 +133,13 @@ sub acquiretree ($$) { return $fh; } +sub mkrepotmp () { + my $tmpdir = "$dgitrepos/_tmp"; + return if mkdir $tmpdir; + return if $! == EEXIST; + die $!; +} + sub reject ($) { die "dgit-repos-server: reject: $_[0]\n"; } @@ -146,6 +153,7 @@ sub runcmd { #----- git-receive-pack ----- sub fixmissing__git_receive_pack () { + mkrepotmp(); $destrepo = "$dgitrepos/_tmp/${package}_prospective"; acquiretree($destrepo, 1); my $r = system qw(cp -a --), "$dgitrepos/_template", "$destrepo"; @@ -153,6 +161,7 @@ sub fixmissing__git_receive_pack () { } sub makeworkingclone () { + mkrepotmp(); $workrepo = "$dgitrepos/_tmp/${package}_incoming$$"; acquiretree($workrepo, 1); runcmd qw(git clone -l -q --mirror), $destrepo, $workrepo;