diff options
author | Ori Bernstein <ori@eigenstate.org> | 2023-04-17 21:11:47 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2023-04-17 21:11:47 +0000 |
commit | 4d901d1e4165085cda5b574b44e1cc51be50abf8 (patch) | |
tree | d8a0e4163181158207d0546c69b9bc42a397570d /sys/src/cmd/git/send.c | |
parent | dd676b5a4fa19fcbe608598e73e3ee6b5bd5ad84 (diff) |
git/send: correctly delete branches with no local mirror
Diffstat (limited to 'sys/src/cmd/git/send.c')
-rw-r--r-- | sys/src/cmd/git/send.c | 9 |
1 files changed, 7 insertions, 2 deletions
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); |