зеркало из https://github.com/microsoft/git.git
rerere.c: replace `git_config()` with `git_config_get_*()` family
Use `git_config_get_*()` family instead of `git_config()` to take advantage of the config-set API which provides a cleaner control flow. Signed-off-by: Tanay Abhra <tanayabh@gmail.com> Reviewed-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
f44af51d13
Коммит
633e5ad326
43
rerere.c
43
rerere.c
|
@ -573,15 +573,11 @@ static int do_plain_rerere(struct string_list *rr, int fd)
|
|||
return write_rr(rr, fd);
|
||||
}
|
||||
|
||||
static int git_rerere_config(const char *var, const char *value, void *cb)
|
||||
static void git_rerere_config(void)
|
||||
{
|
||||
if (!strcmp(var, "rerere.enabled"))
|
||||
rerere_enabled = git_config_bool(var, value);
|
||||
else if (!strcmp(var, "rerere.autoupdate"))
|
||||
rerere_autoupdate = git_config_bool(var, value);
|
||||
else
|
||||
return git_default_config(var, value, cb);
|
||||
return 0;
|
||||
git_config_get_bool("rerere.enabled", &rerere_enabled);
|
||||
git_config_get_bool("rerere.autoupdate", &rerere_autoupdate);
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
static int is_rerere_enabled(void)
|
||||
|
@ -606,7 +602,7 @@ int setup_rerere(struct string_list *merge_rr, int flags)
|
|||
{
|
||||
int fd;
|
||||
|
||||
git_config(git_rerere_config, NULL);
|
||||
git_rerere_config();
|
||||
if (!is_rerere_enabled())
|
||||
return -1;
|
||||
|
||||
|
@ -699,24 +695,6 @@ static void unlink_rr_item(const char *name)
|
|||
rmdir(git_path("rr-cache/%s", name));
|
||||
}
|
||||
|
||||
struct rerere_gc_config_cb {
|
||||
int cutoff_noresolve;
|
||||
int cutoff_resolve;
|
||||
};
|
||||
|
||||
static int git_rerere_gc_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
struct rerere_gc_config_cb *cf = cb;
|
||||
|
||||
if (!strcmp(var, "gc.rerereresolved"))
|
||||
cf->cutoff_resolve = git_config_int(var, value);
|
||||
else if (!strcmp(var, "gc.rerereunresolved"))
|
||||
cf->cutoff_noresolve = git_config_int(var, value);
|
||||
else
|
||||
return git_default_config(var, value, cb);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void rerere_gc(struct string_list *rr)
|
||||
{
|
||||
struct string_list to_remove = STRING_LIST_INIT_DUP;
|
||||
|
@ -724,9 +702,12 @@ void rerere_gc(struct string_list *rr)
|
|||
struct dirent *e;
|
||||
int i, cutoff;
|
||||
time_t now = time(NULL), then;
|
||||
struct rerere_gc_config_cb cf = { 15, 60 };
|
||||
int cutoff_noresolve = 15;
|
||||
int cutoff_resolve = 60;
|
||||
|
||||
git_config(git_rerere_gc_config, &cf);
|
||||
git_config_get_int("gc.rerereresolved", &cutoff_resolve);
|
||||
git_config_get_int("gc.rerereunresolved", &cutoff_noresolve);
|
||||
git_config(git_default_config, NULL);
|
||||
dir = opendir(git_path("rr-cache"));
|
||||
if (!dir)
|
||||
die_errno("unable to open rr-cache directory");
|
||||
|
@ -736,12 +717,12 @@ void rerere_gc(struct string_list *rr)
|
|||
|
||||
then = rerere_last_used_at(e->d_name);
|
||||
if (then) {
|
||||
cutoff = cf.cutoff_resolve;
|
||||
cutoff = cutoff_resolve;
|
||||
} else {
|
||||
then = rerere_created_at(e->d_name);
|
||||
if (!then)
|
||||
continue;
|
||||
cutoff = cf.cutoff_noresolve;
|
||||
cutoff = cutoff_noresolve;
|
||||
}
|
||||
if (then < now - cutoff * 86400)
|
||||
string_list_append(&to_remove, e->d_name);
|
||||
|
|
Загрузка…
Ссылка в новой задаче