From a2a0717c99ab60bc0d7814fa22230013f9347c22 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Sat, 5 Jun 2021 23:29:57 -0400 Subject: 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. --- sys/src/cmd/git/send.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'sys') diff --git a/sys/src/cmd/git/send.c b/sys/src/cmd/git/send.c index 1e44caa81..877c369e5 100644 --- a/sys/src/cmd/git/send.c +++ b/sys/src/cmd/git/send.c @@ -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) -- cgit v1.2.3