diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2016-01-13 18:20:11 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-01-13 11:36:27 -0800 |
commit | 0898c96281044a1130f1a777660aaf17e782c4f6 (patch) | |
tree | 1cc3a3882cbc146a3c065775b7568f78c694a98c | |
parent | 754884255bb580df159e58defa81cdd30b5c430c (diff) | |
download | git-0898c96281044a1130f1a777660aaf17e782c4f6.tar.gz |
fetch: release pack files before garbage-collecting
Before auto-gc'ing, we need to make sure that the pack files are
released in case they need to be repacked and garbage-collected.
This fixes https://github.com/git-for-windows/git/issues/500
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/fetch.c | 2 | ||||
-rwxr-xr-x | t/t5510-fetch.sh | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c index c85f3471d4..5b58001a98 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1221,6 +1221,8 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) list.strdup_strings = 1; string_list_clear(&list, 0); + close_all_packs(); + argv_array_pushl(&argv_gc_auto, "gc", "--auto", NULL); if (verbosity < 0) argv_array_push(&argv_gc_auto, "--quiet"); diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh index 0ba9db0884..e3ee4bd700 100755 --- a/t/t5510-fetch.sh +++ b/t/t5510-fetch.sh @@ -708,4 +708,17 @@ test_expect_success 'fetching a one-level ref works' ' ) ' +test_expect_success 'fetching with auto-gc does not lock up' ' + write_script askyesno <<-\EOF && + echo "$*" && + false + EOF + git clone "file://$D" auto-gc && + test_commit test2 && + cd auto-gc && + git config gc.autoPackLimit 1 && + GIT_ASK_YESNO="$D/askyesno" git fetch >fetch.out 2>&1 && + ! grep "Should I try again" fetch.out +' + test_done |