[PATCH v2 0/3] gc --auto: do not return error for prior errors in daemonized mode
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jul 17, 2018, 06:51 UTC
- Message-ID
- <20180717065151.GA177907@aiede.svl.corp.google.com>
- In-Reply-To
- <20180716172717.237373-1-jonathantanmy@google.com>
Hi,
Jonathan Tan wrote:
Show 12 quoted lines
> In a087cc9819 ("git-gc --auto: protect ourselves from accumulated
> cruft", 2007-09-17), the user was warned if there were too many
> unreachable loose objects. This made sense at the time, because gc
> couldn't prune them safely. But subsequently, git prune learned the
> ability to not prune recently created loose objects, making pruning able
> to be done more safely, and gc was made to automatically prune old
> unreachable loose objects in 25ee9731c1 ("gc: call "prune --expire
> 2.weeks.ago" by default", 2008-03-12).
>
> This makes the warning unactionable by the user, as any loose objects
> left are not deleted yet because of safety, and "git prune" is not a
> command that the user is recommended to run directly anyway.I agree that given the better alternatives we have now, "git prune" is not such a great option these days. E.g. should it say
struct strbuf now = STRBUF_INIT; date_stamp(&now); ...
"run 'git gc --prune=%s' to remove them", now.buf);
?
> This was noticed when a daemonized gc run wrote this warning to the log > file, and returned 0; but a subsequent run merely read the log file, saw > that it is non-empty and returned -1 (which is inconsistent in that such > a run should return 0, as it did the first time).
Here's a series to address that motivating case. Thanks for the careful analysis and to Peff for the patient explanations.
Sincerely, Jonathan Nieder (3): gc: improve handling of errors reading gc.log gc: exit with status 128 on failure gc: do not return error for prior errors in daemonized mode
Documentation/config.txt | 3 ++- builtin/gc.c | 53 ++++++++++++++++++++++++++-------------- t/t6500-gc.sh | 6 ++--- 3 files changed, 40 insertions(+), 22 deletions(-)