X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=infra%2Fdgit-ssh-dispatch;h=6d4efbff655d61d0b746f96d00cb540266677ff0;hp=e1fc241250a997d04eed57b584454bd615c032c6;hb=e3c09bcf8e8187254d2cfd3fa30e9db2d2f31887;hpb=edb1f92ab38d37b03452ca65e5b8394e512fffe8 diff --git a/infra/dgit-ssh-dispatch b/infra/dgit-ssh-dispatch index e1fc2412..6d4efbff 100755 --- a/infra/dgit-ssh-dispatch +++ b/infra/dgit-ssh-dispatch @@ -22,7 +22,7 @@ our $lre = $package_re; our $qre = '["'."']?"; # $dispatchdir/distro=DISTRO should contain -# dgit-live a clone of dgit +# dgit-live a clone of dgit (only if not using installed vsns) # diverts # repos/ } by virtue of # suites } dgit-repos-server's defaults relating to @@ -130,7 +130,11 @@ sub dispatch () { my $cmd=$1; selectpackage $2,$3; if ($cmd eq 'receive-pack') { + $ENV{'PERLLIB'} //= ''; + $ENV{'PERLLIB'} =~ s#^(?=.)#:#; + $ENV{'PERLLIB'} =~ s#^# $ENV{DGIT_TEST_INTREE} // $dgitlive #e; my $s = "$dgitlive/infra/dgit-repos-server"; + $s = "dgit-repos-server" if !stat_exists $s; exec $s, $distro, $d, $authrune, qw(--ssh); die "exec $s: $!"; } elsif ($cmd eq 'upload-pack') { @@ -139,6 +143,16 @@ sub dispatch () { } else { die "unsupported git operation $cmd ($_)"; } + } elsif ( + m#^${qre}git-upload-pack ${qre}/dgit/($lre)/(?:repos/)?_dgit-repos-server\.git${qre}$# + ) { + my $distro= $1; + # if running installed packages, source code should come + # some other way + serve_up("$dispatchdir/distro=$1/dgit-live/.git"); + } elsif (m#^${qre}git-upload-pack\s#) { + die "unknown repo to serve ($_). use dgit, or for server source ". + "git clone here:/dgit/DISTRO/repos/_dgit-repos-server.git"; } else { die "unsupported operation ($_)"; }