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