Hi Jeff. Thanks a lot for your response. Jeff King wrote:
So if I understand correctly, you are only using these for the negative side of the traversal?
Yes. Jeff King wrote:
rev-list should ignore missing objects in such a case even without --ignore-missing, and I think it may simply be a bug if pack-objects is not. Do you have a simple reproduction recipe?
Here's a small bash script to illustrate the core issue: ---- add_file() { echo "$1" > "$1" git add "$1" git commit -m "$1" } git init . git config core.logAllRefUpdates false add_file "test-1" add_file "test-2" git checkout -b feature add_file "test-3" add_file "test-4" git checkout master add_file "test-5" add_file "test-6" feature_tip=$(git rev-list -1 feature) echo -e "\nDeleting branch 'feature' ($feature_tip)..." git branch -D feature git gc --prune=now echo -e "\nCalling git-pack-objects with (now deleted) ^$feature_tip..." git pack-objects --all --revs --stdout --thin --delta-base-offset --all-progress-implied <<< ^$feature_tip > pack echo -e "\nCalling git-rev-list with (now deleted) ^$feature_tip..." git rev-list --all ^$feature_tip echo -e "\nCalling git-rev-list --ignore-missing with (now deleted) ^$feature_tip..." git rev-list --all --ignore-missing ^$feature_tip ---- Both, git-pack-objects and git-rev-list (without --ignore-missing) fail with fatal: bad object <feature_tip> on git version 2.14.1.windows.1.