X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=23cae18f2acdbc58528293c191cf5baf210239d7;hp=f038da35167abebf1bc66dd1d38bd5c0fd86acc2;hb=51f61cf75f6614603782edde86261c9d1bd8c769;hpb=c226efe2ca372f479fc70f88a90e9bc0a9fab7b3 diff --git a/dgit b/dgit index f038da35..23cae18f 100755 --- a/dgit +++ b/dgit @@ -1543,12 +1543,15 @@ END } elsif ($vcmp > 0) { print STDERR < 10) { + fail "too many iterations trying to get sane fetch!"; + } + + my @look = map { "refs/$_" } @specs; + my @lcmd = (@git, qw(ls-remote -q --refs), access_giturl(), @look); + debugcmd "|",@lcmd; + + my %wantr; + open GITLS, "-|", @lcmd or die $!; + while () { + printdebug "=> ", $_; + m/^(\w+)\s+(\S+)\n/ or die "ls-remote $_ ?"; + my ($objid,$rrefname) = ($1,$2); + if (!$wanted_rref->($rrefname)) { + print STDERR <($rrefname)) { + printdebug <'; + my $want = $wantr{$rrefname}; + next if $got eq $want; + if (!defined $objgot{$want}) { + print STDERR <