#
# 4. Run the mirror script to push changes, if necessary.
+END { $? = $Debian::Dgit::ExitStatus::desired // -1; };
+use Debian::Dgit::ExitStatus;
use strict;
die "$? $!" if $?;
chomp $bare or die;
+our @configs;
+foreach my $k (qw(core.sharedRepository)) {
+ $?=0; $!=0; my $v = `set -x; git config --local $k`;
+ if (defined $v && $?==0 && chomp $v) {
+ push @configs, [ $k, $v ];
+ } elsif (defined $v && $?==256 && $v eq '') {
+ } else {
+ die "git-config --local $k => $v $? $! ?";
+ }
+}
+
sub getobj ($$) {
my ($obj, $type) = @_;
print GCFI $obj, "\n" or die $!;
runcmd qw(git config gc.auto 0);
runcmd qw(rm -rf .git/objects);
symlink "../../objects", ".git/objects" or die $!;
+ foreach my $c (@configs) {
+ runcmd qw(git config), $c->[0], $c->[1];
+ }
my %map;
or die "$_ ?";
if ($refname eq 'refs/dgit-rewrite/map') {
$org_rewrite_map = $obj;
- continue;
+ next;
}
next if $refname =~ m{^refs/dgit-(?:badcommit|badfixuptest)/};
+
+ $!=0; $?=0;
+ system qw(sh -ec),
+ 'exec >/dev/null git symbolic-ref -q "$1"', qw(x),
+ $refname;
+ if ($?==0) {
+ $count{symrefs_ignored}++;
+ next;
+ }
+ die "$? $!" unless $?==256;
+
my $rewrite;
if ($type eq 'commit') {
$rewrite = rewrite_commit($obj);
if (!@updates) {
print Dumper(\%count), "all is well - nothing to do\n";
- exit 0;
+ finish 0;
}
#print Dumper(\@updates);
print "old values saved in refs/dgit-badcommit/\n" or die $!;
} elsif ($real == 0) {
print "testing output saved in refs/dgit-badfixuptest/\n" or die $!;
+} else {
+ print STDERR "found work to do, exiting status 2\n";
+ finish 2;
}
+
+finish 0;