Housekeeping jobs like auto gc generally should not get in the way. Users who are pushing may not want to wait until auto gc is done on the server. Give a hint for those users that it's safe now to break "git push" and stop waiting. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- This bandage patch may be a good compromise between running auto gc and not annoying users much. If I'm not mistaken, when ^C on "git push" this way, gc will still be running until it needs to print something out (which it should not normally because of --quiet). The user won't see gc errors, but the user generally can't do much anyway. builtin/gc.c | 9 ++++++++- builtin/receive-pack.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index c19545d..592271a 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -253,6 +253,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) int auto_gc = 0; int quiet = 0; int force = 0; + int break_ok = 0; const char *name; pid_t pid; @@ -263,6 +264,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix) PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire }, OPT_BOOL(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")), OPT_BOOL(0, "auto", &auto_gc, N_("enable auto-gc mode")), + OPT_HIDDEN_BOOL(0, "break-ok", &break_ok, + "hint that it is ok to stop the program"), OPT_BOOL(0, "force", &force, N_("force running gc even if there may be another gc running")), OPT_END() }; @@ -301,7 +304,11 @@ int cmd_gc(int argc, const char **argv, const char *prefix) */ if (!need_to_gc()) return 0; - if (!quiet) + if (break_ok) + fprintf(stderr, + _("Auto packing the repository for optimum performance.\n" + "It is safe to stop the program with Ctrl-C.\n")); + else if (!quiet) fprintf(stderr, _("Auto packing the repository for optimum performance. You may also\n" "run \"git gc\" manually. See " diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 82e2f76..68d16e0 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1212,7 +1212,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) update_server_info(0); if (auto_gc) { const char *argv_gc_auto[] = { - "gc", "--auto", "--quiet", NULL, + "gc", "--auto", "--quiet", "--break-ok", NULL, }; int opt = RUN_GIT_CMD | RUN_COMMAND_STDOUT_TO_STDERR; run_command_v_opt(argv_gc_auto, opt); -- 1.8.5.2.240.g8478abd -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html