Coy Geek reported that on Git 2.56.0, git repack -a --filter=blob:limit=1m --drop-filtered --dry-run prints the candidate blob but also writes a new promisor pack and its sidecar files. Adding an explicit -d also removes the old redundant packs and their sidecars. Both commands exit successfully, despite the documented promise to list candidates without rebuilding packs or deleting anything. The report says the tested blob remained available, so it does not demonstrate loss of object content.

D. Ben Knoble copied Siddharth Shrimali, who wrote the --drop-filtered code. Shrimali said the dry-run block in cmd_repack() prints the candidates but does not stop there. It falls through to repack_promisor_objects(), which writes the new pack, and with an explicit -d it reaches existing_packs_remove_redundant(). The earlier code that stops -d from being implied under dry-run does not stop it from being given explicitly.

His proposed fix is two lines in builtin/repack.c: at the end of the dry-run block, after the loop that prints candidate object IDs, set ret = 0 and goto cleanup. A patch has not yet appeared in the excerpts.