commit 4088ab23bf2d330dc66483a747e0efb6c185eed8 from: Stefan Sperling via: Thomas Adam date: Fri Jan 27 16:48:21 2023 UTC fix missing commits in pack files created with packed object enumeration got-read-pack forgot to send a tree-enumeration-done message to the main process if the tree of a given commit had already been traversed. The main process would then not add the corresponding commit to the pack file, even though it should be added. Found while using 'got send' towards gotd in order to populate an empty repository on the server with non-trivial history, where some commits always ended up missing due to this bug. ok tracey commit - d4becbee8b30bfddd42b47a5d8cc47e3cfbc7077 commit + 4088ab23bf2d330dc66483a747e0efb6c185eed8 blob - 2f2c70607588a2e340dc7697744573a0a76ea585 blob + d9a0d79f6f8a04fd392ed4bdd60090f2d26c73ab --- libexec/got-read-pack/got-read-pack.c +++ libexec/got-read-pack/got-read-pack.c @@ -1473,6 +1473,9 @@ enumeration_request(struct imsg *imsg, struct imsgbuf if (got_object_idset_contains(idset, tree_id)) { got_object_qid_free(qid); qid = NULL; + err = send_tree_enumeration_done(ibuf); + if (err) + goto done; continue; }