chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dgit-repos-server: tests: download a dm.txt from https://ftp-master.debian.org/dm.txt
[dgit.git]
/
dgit-repos-server
diff --git
a/dgit-repos-server
b/dgit-repos-server
index eb59edc4e2b02014b225808a34d75388a1ccbe50..8d821861d1db6b02f76fccd16e81ef92a954d6a3 100755
(executable)
--- a/
dgit-repos-server
+++ b/
dgit-repos-server
@@
-151,17
+151,26
@@
sub mkrepotmp () {
sub reject ($) {
my ($why) = @_;
sub reject ($) {
my ($why) = @_;
- debug " rejecting $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 $!;
+ }
die "dgit-repos-server: reject: $why\n";
}
die "dgit-repos-server: reject: $why\n";
}
-sub
run
cmd {
+sub
debug
cmd {
if ($debug) {
use Data::Dumper;
local $Data::Dumper::Indent = 0;
local $Data::Dumper::Terse = 1;
debug "|".Dumper(\@_);
}
if ($debug) {
use Data::Dumper;
local $Data::Dumper::Indent = 0;
local $Data::Dumper::Terse = 1;
debug "|".Dumper(\@_);
}
+}
+
+sub runcmd {
+ debugcmd @_;
$!=0; $?=0;
my $r = system @_;
die "@_ $? $!" if $r;
$!=0; $?=0;
my $r = system @_;
die "@_ $? $!" if $r;
@@
-173,7
+182,9
@@
sub fixmissing__git_receive_pack () {
mkrepotmp();
$destrepo = "$dgitrepos/_tmp/${package}_prospective";
acquiretree($destrepo, 1);
mkrepotmp();
$destrepo = "$dgitrepos/_tmp/${package}_prospective";
acquiretree($destrepo, 1);
- my $r = system qw(cp -a --), "$dgitrepos/_template", "$destrepo";
+ my $template = "$dgitrepos/_template";
+ debug "fixmissing copy tempalate $template -> $destrepo";
+ my $r = system qw(cp -a --), $template, $destrepo;
!$r or die "create new repo failed failed: $r $!";
}
!$r or die "create new repo failed failed: $r $!";
}
@@
-202,7
+213,15
@@
END
sub maybeinstallprospective () {
return if $destrepo eq $realdestrepo;
sub maybeinstallprospective () {
return if $destrepo eq $realdestrepo;
- debug " show-ref ...";
+ if (open REJ, "<", "$workrepo/drs-reject") {
+ $!=0; my $why = <REJ>;
+ chomp $why or die $!;
+ reject $why;
+ } else {
+ $!==&ENOENT or die $!;
+ }
+
+ debug " show-ref ($destrepo) ...";
my $child = open SR, "-|";
defined $child or die $!;
my $child = open SR, "-|";
defined $child or die $!;
@@
-222,9
+241,13
@@
sub maybeinstallprospective () {
die;
die if $got{$wh}++;
}
die;
die if $got{$wh}++;
}
- die if grep { !$_ } values %got;
- $!=0; $?=0; close SR or die "$? $!";
+ $!=0; $?=0; close SR or $?==256 or die "$? $!";
+ debug "installprospective ?";
+ die Dumper(\%got)." -- missing refs in new repo"
+ if grep { !$_ } values %got;
+
+ debug "install $destrepo => $realdestrepo";
rename $destrepo, $realdestrepo or die $!;
remove "$destrepo.lock" or die $!;
}
rename $destrepo, $realdestrepo or die $!;
remove "$destrepo.lock" or die $!;
}
@@
-288,7
+311,8
@@
sub parsetag () {
}
}
$!=0; $_=<T>; defined or die $!;
}
}
$!=0; $_=<T>; defined or die $!;
- m/^($package_re) release (\S+) for (\S+) \[dgit\]$/ or die;
+ m/^($package_re) release (\S+) for \S+ \((\S+)\) \[dgit\]$/ or
+ reject "tag message not in expected format";
die unless $1 eq $package;
$version = $2;
die unless $1 eq $package;
$version = $2;
@@
-437,16
+461,18
@@
sub checks () {
}
sub onwardpush () {
}
sub onwardpush () {
+ my @cmd = (qw(git send-pack), $destrepo,
+ "$commit:refs/dgit/$suite",
+ "$tagval:refs/tags/$tagname");
+ debugcmd @cmd;
$!=0;
$!=0;
- my $r = system (qw(git send-pack),
- $destrepo,
- "$commit:refs/dgit/$suite",
- "$tagval:refs/tags/$tagname");
+ my $r = system @cmd;
!$r or die "onward push failed: $r $!";
}
sub stunthook () {
debug "stunthook";
!$r or die "onward push failed: $r $!";
}
sub stunthook () {
debug "stunthook";
+ print Dumper(\$ENV{GIT_DIR});
chdir $workrepo or die "chdir $workrepo: $!";
mkdir "dgit-tmp" or $!==EEXIST or die $!;
readupdates();
chdir $workrepo or die "chdir $workrepo: $!";
mkdir "dgit-tmp" or $!==EEXIST or die $!;
readupdates();
@@
-454,6
+480,7
@@
sub stunthook () {
verifytag();
checks();
onwardpush();
verifytag();
checks();
onwardpush();
+ debug "stunthook done.";
}
#----- git-upload-pack -----
}
#----- git-upload-pack -----
@@
-487,6
+514,9
@@
sub argval () {
sub parseargsdispatch () {
die unless @ARGV;
sub parseargsdispatch () {
die unless @ARGV;
+ delete $ENV{'GIT_DIR'}; # if not run via ssh, our parent git process
+ delete $ENV{'GIT_PREFIX'}; # sets these and they mess things up
+
if ($ENV{'DGIT_DRS_DEBUG'}) {
$debug='=';
open DEBUG, ">&STDERR" or die $!;
if ($ENV{'DGIT_DRS_DEBUG'}) {
$debug='=';
open DEBUG, ">&STDERR" or die $!;