rebase: ignore failures from "gc --auto"

After rebasing, we call "gc --auto" to clean up if we created a lot of loose objects. However, we do so inside an &&-chain. If "gc --auto" fails (e.g., because a previous background gc blocked us by leaving "gc.log" in place), then: 1. We will fail to clean up the state directory, leaving the user stuck in the rebase forever (even "git am --abort" doesn't work, because it calls "gc --auto"!). 2. In some cases, we may return a bogus exit code from rebase, indicating failure when everything except the auto-gc succeeded. We can fix this by ignoring the exit code of "gc --auto". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jan 13, 2016 at 13:47 UTC 8c24f5b022095f4735fcb73364ccae7d97576636
1 file changed +1 -1
git-rebase.sh
+1 -1
@@ -176,7 +176,7 @@ You can run "git stash pop" or "git stash drop" at any time.
176
177 finish_rebase () {
178 apply_autostash &&
179 - git gc --auto &&
179 + { git gc --auto || true; } &&
180 rm -rf "$state_dir"
181 }
182