fetch: after refetch, encourage auto gc repacking
After invoking `fetch --refetch`, the object db will likely contain many duplicate objects. If auto-maintenance is enabled, invoke it with appropriate settings to encourage repacking/consolidation. * gc.autoPackLimit: unless this is set to 0 (disabled), override the value to 1 to force pack consolidation. * maintenance.incremental-repack.auto: unless this is set to 0, override the value to -1 to force incremental repacking. Signed-off-by: Robert Coup <robert@coup.net.nz> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
011b775727
commit
7390f05a3c
@ -2226,8 +2226,25 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (enable_auto_gc)
|
||||
if (enable_auto_gc) {
|
||||
if (refetch) {
|
||||
/*
|
||||
* Hint auto-maintenance strongly to encourage repacking,
|
||||
* but respect config settings disabling it.
|
||||
*/
|
||||
int opt_val;
|
||||
if (git_config_get_int("gc.autopacklimit", &opt_val))
|
||||
opt_val = -1;
|
||||
if (opt_val != 0)
|
||||
git_config_push_parameter("gc.autoPackLimit=1");
|
||||
|
||||
if (git_config_get_int("maintenance.incremental-repack.auto", &opt_val))
|
||||
opt_val = -1;
|
||||
if (opt_val != 0)
|
||||
git_config_push_parameter("maintenance.incremental-repack.auto=-1");
|
||||
}
|
||||
run_auto_maintenance(verbosity < 0);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
string_list_clear(&list, 0);
|
||||
|
Reference in New Issue
Block a user