From: Steven Grimm <koreth@midwinter.com>
To: git@vger.kernel.org
Subject: [PATCH 1/2] git-gc: allow --prune to be specified with --auto
Date: Thu, 4 Oct 2007 17:12:49 -0700 [thread overview]
Message-ID: <20071005001249.GA12896@midwinter.com> (raw)
This will run git-prune only if there are still lots of loose objects
after the repack finishes. Obviously the caveats about pruning not being
a safe operation to run concurrently with other git commands still apply.
Signed-off-by: Steven Grimm <koreth@midwinter.com>
---
Documentation/git-gc.txt | 4 +++-
builtin-gc.c | 18 +++++++++++++-----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt
index b9d5660..60731e9 100644
--- a/Documentation/git-gc.txt
+++ b/Documentation/git-gc.txt
@@ -33,7 +33,9 @@ OPTIONS
done by default. Pass this option if you want it, and only
when you know nobody else is creating new objects in the
repository at the same time (e.g. never use this option
- in a cron script).
+ in a cron script). If used with the `--auto` option,
+ pruning will only be done if there are many loose objects
+ in the repository after gitlink:git-repack[1] is finished.
--aggressive::
Usually 'git-gc' runs very quickly while providing good disk
diff --git a/builtin-gc.c b/builtin-gc.c
index 23ad2b6..b65cacc 100644
--- a/builtin-gc.c
+++ b/builtin-gc.c
@@ -208,7 +208,6 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
/*
* Auto-gc should be least intrusive as possible.
*/
- prune = 0;
if (!need_to_gc())
return 0;
}
@@ -222,15 +221,24 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
if (run_command_v_opt(argv_repack, RUN_GIT_CMD))
return error(FAILED_RUN, argv_repack[0]);
+ if (auto_gc) {
+ if (too_many_loose_objects()) {
+ if (! prune) {
+ warning("There are too many unreachable loose "
+ "objects; run 'git gc --prune' to "
+ "remove them.");
+ }
+ // else we will run the prune next
+ } else {
+ prune = 0;
+ }
+ }
+
if (prune && run_command_v_opt(argv_prune, RUN_GIT_CMD))
return error(FAILED_RUN, argv_prune[0]);
if (run_command_v_opt(argv_rerere, RUN_GIT_CMD))
return error(FAILED_RUN, argv_rerere[0]);
- if (auto_gc && too_many_loose_objects())
- warning("There are too many unreachable loose objects; "
- "run 'git prune' to remove them.");
-
return 0;
}
--
1.5.3.4.203.gcc61a
reply other threads:[~2007-10-05 0:13 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071005001249.GA12896@midwinter.com \
--to=koreth@midwinter.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).