gc: refactor a "call me once" pattern
Change an idiom we're using to ensure that gc_before_repack() only
does work once (see 62aad1849f
("gc --auto: do not lock refs in the
background", 2014-05-25)) to be more obvious.
Nothing except this function cares about the "pack_refs" and
"prune_reflogs" variables, so let's not leave the reader wondering if
they're being zero'd out for later use somewhere else.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e5cdbd5f70
commit
cd8eb3a094
12
builtin/gc.c
12
builtin/gc.c
@ -489,14 +489,20 @@ done:
|
|||||||
|
|
||||||
static void gc_before_repack(void)
|
static void gc_before_repack(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* We may be called twice, as both the pre- and
|
||||||
|
* post-daemonized phases will call us, but running these
|
||||||
|
* commands more than once is pointless and wasteful.
|
||||||
|
*/
|
||||||
|
static int done = 0;
|
||||||
|
if (done++)
|
||||||
|
return;
|
||||||
|
|
||||||
if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD))
|
if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD))
|
||||||
die(FAILED_RUN, pack_refs_cmd.argv[0]);
|
die(FAILED_RUN, pack_refs_cmd.argv[0]);
|
||||||
|
|
||||||
if (prune_reflogs && run_command_v_opt(reflog.argv, RUN_GIT_CMD))
|
if (prune_reflogs && run_command_v_opt(reflog.argv, RUN_GIT_CMD))
|
||||||
die(FAILED_RUN, reflog.argv[0]);
|
die(FAILED_RUN, reflog.argv[0]);
|
||||||
|
|
||||||
pack_refs = 0;
|
|
||||||
prune_reflogs = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmd_gc(int argc, const char **argv, const char *prefix)
|
int cmd_gc(int argc, const char **argv, const char *prefix)
|
||||||
|
Loading…
Reference in New Issue
Block a user