Merge branch 'ew/prune-with-missing-objects-pack'

"git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary.  The command has been taught to
ignore such a failure.

* ew/prune-with-missing-objects-pack:
  prune: quiet ENOENT on missing directories
This commit is contained in:
Junio C Hamano 2022-11-28 12:13:43 +09:00
commit 7d7ed48dd5
2 changed files with 11 additions and 1 deletions

View file

@ -127,7 +127,9 @@ static void remove_temporary_files(const char *path)
dir = opendir(path);
if (!dir) {
fprintf(stderr, "Unable to open directory %s\n", path);
if (errno != ENOENT)
fprintf(stderr, "Unable to open directory %s: %s\n",
path, strerror(errno));
return;
}
while ((de = readdir(dir)) != NULL)

View file

@ -29,6 +29,14 @@ test_expect_success setup '
git gc
'
test_expect_success 'bare repo prune is quiet without $GIT_DIR/objects/pack' '
git clone -q --shared --template= --bare . bare.git &&
rmdir bare.git/objects/pack &&
git --git-dir=bare.git prune --no-progress 2>prune.err &&
test_must_be_empty prune.err &&
rm -r bare.git prune.err
'
test_expect_success 'prune stale packs' '
orig_pack=$(echo .git/objects/pack/*.pack) &&
>.git/objects/tmp_1.pack &&