From: Junio C Hamano Date: Tue, 02 Sep 2014 18:12:11 GMT Subject: Re: [PATCH] gc --auto: do not run 'pack-refs' and 'reflog expire' twice Message-ID: In-Reply-To: <1409459610-8695-1-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy writes: > In the --auto code path, gc_before_repack() is called once in parent > process then again in the forked process. Stop the second run. Hmph. Is the true reason why this happens because we have two calls to gc_before_repack() in the main, and one is before daemonize()? Shouldn't this protection be in the caller? > > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > builtin/gc.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/builtin/gc.c b/builtin/gc.c > index 8d219d8..fb0cff3 100644 > --- a/builtin/gc.c > +++ b/builtin/gc.c > @@ -261,6 +261,11 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid) > > static int gc_before_repack(void) > { > + static int nr_runs; > + > + if (nr_runs++) > + return 0; > + > if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD)) > return error(FAILED_RUN, pack_refs_cmd.argv[0]);