X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=yarrg%2Fweb%2Fsource.tar.gz;fp=yarrg%2Fweb%2Fsource.tar.gz;h=0efb98ba0db2bfbff46d1dadb5da5725ee883b79;hb=d97ce2e06c50ce30882d3482dfaefa14e52b309f;hp=0000000000000000000000000000000000000000;hpb=2961c979e0f7bdae7183d49ab7fab5f5830dff4e;p=ypp-sc-tools.db-test.git diff --git a/yarrg/web/source.tar.gz b/yarrg/web/source.tar.gz new file mode 100644 index 0000000..0efb98b --- /dev/null +++ b/yarrg/web/source.tar.gz @@ -0,0 +1,35 @@ +<%perl> +use IO::Pipe; +use CommodsWeb; + +$r->content_type('application/octet-stream'); +$m->flush_buffer(); + +$ENV{'YPPSC_YARRG_SRCBASE'}= $sourcebasedir; +my $pipe= new IO::Pipe or die $!; +my $pid= fork(); defined $pid or die $!; +if (!$pid) { + $pipe->writer(); + exec '/bin/sh','-c',' + cd -P "$YPPSC_YARRG_SRCBASE" + ( + git-ls-files -z; + if test -d .git; then find .git -print0; fi + ) | cpio -Hustar -o --quiet -0 -R 1000:1000 + '; + die $!; +} +$pipe->reader(); + +my ($d, $l); +while ($l= read $pipe, $d, 65536) { + print $d; + $m->flush_buffer(); +} +waitpid $pid,0; +defined $l or die "read pipe $!"; +$pipe->error and die "pipe error $!"; +close $pipe; +# deliberately ignore errors + +