From 4d901d1e4165085cda5b574b44e1cc51be50abf8 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Mon, 17 Apr 2023 21:11:47 +0000 Subject: git/send: correctly delete branches with no local mirror --- sys/src/cmd/git/send.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'sys/src/cmd/git/send.c') diff --git a/sys/src/cmd/git/send.c b/sys/src/cmd/git/send.c index 1188a71fa..e83d6866f 100644 --- a/sys/src/cmd/git/send.c +++ b/sys/src/cmd/git/send.c @@ -75,9 +75,11 @@ readours(Hash **tailp, char ***refp) sysfatal("smprint: %r"); if((idx = findref(ref, nu, r)) == -1) idx = nu++; + else + free(ref[idx]); assert(idx < nremoved + nbranch); memcpy(&tail[idx], &Zhash, sizeof(Hash)); - free(r); + ref[idx] = r; } dprint(1, "nu: %d\n", nu); for(i = 0; i < nu; i++) @@ -184,7 +186,10 @@ sendpack(Conn *c) p = nil; if(a != nil && b != nil) p = ancestor(a, b); - if(!force && !hasheq(&m->theirs, &Zhash) && (a == nil || p != a)){ + if(!force + && !hasheq(&m->theirs, &Zhash) + && !hasheq(&m->ours, &Zhash) + && (a == nil || p != a)){ fprint(2, "remote has diverged\n"); werrstr("remote diverged"); flushpkt(c); -- cgit v1.2.3