git/send: allow the remote to have refs that we don't

It's not fatal for someone else to push a branch
with objects that we don't have. We should deal
with it gracefully, and act as though it doesn't
exist.
This commit is contained in:
Ori Bernstein 2021-06-05 23:29:57 -04:00
parent 74912993de
commit a2a0717c99

View file

@ -121,7 +121,7 @@ sendpack(Conn *c)
int nours, ntheirs, nmap;
char buf[Pktmax], *sp[3];
Hash h, *theirs, *ours;
Object *a, *b, *p;
Object *a, *b, *p, *o;
char **refs;
Capset cs;
Map *map, *m;
@ -155,9 +155,12 @@ sendpack(Conn *c)
theirs = earealloc(theirs, ntheirs+1, sizeof(Hash));
if(hparse(&theirs[ntheirs], sp[0]) == -1)
sysfatal("invalid hash %s", sp[0]);
if((idx = findkey(map, nmap, sp[1])) != -1)
map[idx].theirs = theirs[ntheirs];
ntheirs++;
if((o = readobject(theirs[ntheirs])) != nil){
if((idx = findkey(map, nmap, sp[1])) != -1)
map[idx].theirs = theirs[ntheirs];
ntheirs++;
unref(o);
}
}
if(writephase(c) == -1)