Re: [PATCH/RFC 2/2] receive-pack: hint that the user can stop "git push" at auto gc time

2014-02-04 Thread Junio C Hamano
Junio C Hamano  writes:

> Nguyễn Thái Ngọc Duy   writes:
>
>> 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 
>> ---
>>  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.
>
> If you are over local transport, I would think you would kill the
> both ends.  Also, wouldn't killing "git push" before it is done
> talking with the receive-pack stop it before it has a chance to
> update the remote tracking refs to pretend as if it fetched from
> there immediately after a push?
>
> So, no. I do not think we should ever encourage "if this bothers
> you, you can ^C it".  Making it not to bother is fine, though.

Instead of adding a boolean --break-ok that is hidden, why not
adding an exposed boolean --daemonize, and let auto-gc run in the
background?  With the recent "do not let more than one gc run at the
same time", that should give a lot more pleasant end user
experience, no?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH/RFC 2/2] receive-pack: hint that the user can stop "git push" at auto gc time

2014-02-04 Thread Junio C Hamano
Nguyễn Thái Ngọc Duy   writes:

> 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 
> ---
>  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.

If you are over local transport, I would think you would kill the
both ends.  Also, wouldn't killing "git push" before it is done
talking with the receive-pack stop it before it has a chance to
update the remote tracking refs to pretend as if it fetched from
there immediately after a push?

So, no. I do not think we should ever encourage "if this bothers
you, you can ^C it".  Making it not to bother is fine, though.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH/RFC 2/2] receive-pack: hint that the user can stop "git push" at auto gc time

2014-02-03 Thread Nguyễn Thái Ngọc Duy
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 
---
 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html