зеркало из https://github.com/microsoft/git.git
Merge branch 'ta/config-set-2'
Update git_config() users with callback functions for a very narrow scope with calls to config-set API that lets us query a single variable. * ta/config-set-2: builtin/apply.c: replace `git_config()` with `git_config_get_string_const()` merge-recursive.c: replace `git_config()` with `git_config_get_int()` ll-merge.c: refactor `read_merge_config()` to use `git_config_string()` fast-import.c: replace `git_config()` with `git_config_get_*()` family branch.c: replace `git_config()` with `git_config_get_string() alias.c: replace `git_config()` with `git_config_get_string()` imap-send.c: replace `git_config()` with `git_config_get_*()` family pager.c: replace `git_config()` with `git_config_get_value()` builtin/gc.c: replace `git_config()` with `git_config_get_*()` family rerere.c: replace `git_config()` with `git_config_get_*()` family fetchpack.c: replace `git_config()` with `git_config_get_*()` family archive.c: replace `git_config()` with `git_config_get_bool()` family read-cache.c: replace `git_config()` with `git_config_get_*()` family http-backend.c: replace `git_config()` with `git_config_get_bool()` family daemon.c: replace `git_config()` with `git_config_get_bool()` family
This commit is contained in:
Коммит
554913daf4
25
alias.c
25
alias.c
|
@ -1,26 +1,13 @@
|
|||
#include "cache.h"
|
||||
|
||||
static const char *alias_key;
|
||||
static char *alias_val;
|
||||
|
||||
static int alias_lookup_cb(const char *k, const char *v, void *cb)
|
||||
{
|
||||
const char *name;
|
||||
if (skip_prefix(k, "alias.", &name) && !strcmp(name, alias_key)) {
|
||||
if (!v)
|
||||
return config_error_nonbool(k);
|
||||
alias_val = xstrdup(v);
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *alias_lookup(const char *alias)
|
||||
{
|
||||
alias_key = alias;
|
||||
alias_val = NULL;
|
||||
git_config(alias_lookup_cb, NULL);
|
||||
return alias_val;
|
||||
char *v = NULL;
|
||||
struct strbuf key = STRBUF_INIT;
|
||||
strbuf_addf(&key, "alias.%s", alias);
|
||||
git_config_get_string(key.buf, &v);
|
||||
strbuf_release(&key);
|
||||
return v;
|
||||
}
|
||||
|
||||
#define SPLIT_CMDLINE_BAD_ENDING 1
|
||||
|
|
12
archive.c
12
archive.c
|
@ -402,14 +402,6 @@ static int parse_archive_args(int argc, const char **argv,
|
|||
return argc;
|
||||
}
|
||||
|
||||
static int git_default_archive_config(const char *var, const char *value,
|
||||
void *cb)
|
||||
{
|
||||
if (!strcmp(var, "uploadarchive.allowunreachable"))
|
||||
remote_allow_unreachable = git_config_bool(var, value);
|
||||
return git_default_config(var, value, cb);
|
||||
}
|
||||
|
||||
int write_archive(int argc, const char **argv, const char *prefix,
|
||||
int setup_prefix, const char *name_hint, int remote)
|
||||
{
|
||||
|
@ -420,7 +412,9 @@ int write_archive(int argc, const char **argv, const char *prefix,
|
|||
if (setup_prefix && prefix == NULL)
|
||||
prefix = setup_git_directory_gently(&nongit);
|
||||
|
||||
git_config(git_default_archive_config, NULL);
|
||||
git_config_get_bool("uploadarchive.allowunreachable", &remote_allow_unreachable);
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
init_tar_archiver();
|
||||
init_zip_archiver();
|
||||
|
||||
|
|
27
branch.c
27
branch.c
|
@ -140,30 +140,17 @@ static int setup_tracking(const char *new_ref, const char *orig_ref,
|
|||
return 0;
|
||||
}
|
||||
|
||||
struct branch_desc_cb {
|
||||
const char *config_name;
|
||||
const char *value;
|
||||
};
|
||||
|
||||
static int read_branch_desc_cb(const char *var, const char *value, void *cb)
|
||||
{
|
||||
struct branch_desc_cb *desc = cb;
|
||||
if (strcmp(desc->config_name, var))
|
||||
return 0;
|
||||
free((char *)desc->value);
|
||||
return git_config_string(&desc->value, var, value);
|
||||
}
|
||||
|
||||
int read_branch_desc(struct strbuf *buf, const char *branch_name)
|
||||
{
|
||||
struct branch_desc_cb cb;
|
||||
char *v = NULL;
|
||||
struct strbuf name = STRBUF_INIT;
|
||||
strbuf_addf(&name, "branch.%s.description", branch_name);
|
||||
cb.config_name = name.buf;
|
||||
cb.value = NULL;
|
||||
git_config(read_branch_desc_cb, &cb);
|
||||
if (cb.value)
|
||||
strbuf_addstr(buf, cb.value);
|
||||
if (git_config_get_string(name.buf, &v)) {
|
||||
strbuf_release(&name);
|
||||
return -1;
|
||||
}
|
||||
strbuf_addstr(buf, v);
|
||||
free(v);
|
||||
strbuf_release(&name);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -4274,13 +4274,11 @@ static int apply_patch(int fd, const char *filename, int options)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int git_apply_config(const char *var, const char *value, void *cb)
|
||||
static void git_apply_config(void)
|
||||
{
|
||||
if (!strcmp(var, "apply.whitespace"))
|
||||
return git_config_string(&apply_default_whitespace, var, value);
|
||||
else if (!strcmp(var, "apply.ignorewhitespace"))
|
||||
return git_config_string(&apply_default_ignorewhitespace, var, value);
|
||||
return git_default_config(var, value, cb);
|
||||
git_config_get_string_const("apply.whitespace", &apply_default_whitespace);
|
||||
git_config_get_string_const("apply.ignorewhitespace", &apply_default_ignorewhitespace);
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
static int option_parse_exclude(const struct option *opt,
|
||||
|
@ -4428,7 +4426,7 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
|
|||
|
||||
prefix = prefix_;
|
||||
prefix_length = prefix ? strlen(prefix) : 0;
|
||||
git_config(git_apply_config, NULL);
|
||||
git_apply_config();
|
||||
if (apply_default_whitespace)
|
||||
parse_whitespace_option(apply_default_whitespace);
|
||||
if (apply_default_ignorewhitespace)
|
||||
|
|
51
builtin/gc.c
51
builtin/gc.c
|
@ -55,44 +55,33 @@ static void remove_pidfile_on_signal(int signo)
|
|||
raise(signo);
|
||||
}
|
||||
|
||||
static int gc_config(const char *var, const char *value, void *cb)
|
||||
static void gc_config(void)
|
||||
{
|
||||
if (!strcmp(var, "gc.packrefs")) {
|
||||
const char *value;
|
||||
|
||||
if (!git_config_get_value("gc.packrefs", &value)) {
|
||||
if (value && !strcmp(value, "notbare"))
|
||||
pack_refs = -1;
|
||||
else
|
||||
pack_refs = git_config_bool(var, value);
|
||||
return 0;
|
||||
pack_refs = git_config_bool("gc.packrefs", value);
|
||||
}
|
||||
if (!strcmp(var, "gc.aggressivewindow")) {
|
||||
aggressive_window = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "gc.aggressivedepth")) {
|
||||
aggressive_depth = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "gc.auto")) {
|
||||
gc_auto_threshold = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "gc.autopacklimit")) {
|
||||
gc_auto_pack_limit = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "gc.autodetach")) {
|
||||
detach_auto = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "gc.pruneexpire")) {
|
||||
if (value && strcmp(value, "now")) {
|
||||
|
||||
git_config_get_int("gc.aggressivewindow", &aggressive_window);
|
||||
git_config_get_int("gc.aggressivedepth", &aggressive_depth);
|
||||
git_config_get_int("gc.auto", &gc_auto_threshold);
|
||||
git_config_get_int("gc.autopacklimit", &gc_auto_pack_limit);
|
||||
git_config_get_bool("gc.autodetach", &detach_auto);
|
||||
|
||||
if (!git_config_get_string_const("gc.pruneexpire", &prune_expire)) {
|
||||
if (strcmp(prune_expire, "now")) {
|
||||
unsigned long now = approxidate("now");
|
||||
if (approxidate(value) >= now)
|
||||
return error(_("Invalid %s: '%s'"), var, value);
|
||||
if (approxidate(prune_expire) >= now) {
|
||||
git_die_config("gc.pruneexpire", _("Invalid gc.pruneexpire: '%s'"),
|
||||
prune_expire);
|
||||
}
|
||||
}
|
||||
return git_config_string(&prune_expire, var, value);
|
||||
}
|
||||
return git_default_config(var, value, cb);
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
static int too_many_loose_objects(void)
|
||||
|
@ -301,7 +290,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
|
|||
argv_array_pushl(&prune, "prune", "--expire", NULL );
|
||||
argv_array_pushl(&rerere, "rerere", "gc", NULL);
|
||||
|
||||
git_config(gc_config, NULL);
|
||||
gc_config();
|
||||
|
||||
if (pack_refs < 0)
|
||||
pack_refs = !is_bare_repository();
|
||||
|
|
26
daemon.c
26
daemon.c
|
@ -230,23 +230,6 @@ struct daemon_service {
|
|||
int overridable;
|
||||
};
|
||||
|
||||
static struct daemon_service *service_looking_at;
|
||||
static int service_enabled;
|
||||
|
||||
static int git_daemon_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
const char *service;
|
||||
|
||||
if (skip_prefix(var, "daemon.", &service) &&
|
||||
!strcmp(service, service_looking_at->config_name)) {
|
||||
service_enabled = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* we are not interested in parsing any other configuration here */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int daemon_error(const char *dir, const char *msg)
|
||||
{
|
||||
if (!informative_errors)
|
||||
|
@ -324,6 +307,7 @@ static int run_service(const char *dir, struct daemon_service *service)
|
|||
{
|
||||
const char *path;
|
||||
int enabled = service->enabled;
|
||||
struct strbuf var = STRBUF_INIT;
|
||||
|
||||
loginfo("Request %s for '%s'", service->name, dir);
|
||||
|
||||
|
@ -354,11 +338,9 @@ static int run_service(const char *dir, struct daemon_service *service)
|
|||
}
|
||||
|
||||
if (service->overridable) {
|
||||
service_looking_at = service;
|
||||
service_enabled = -1;
|
||||
git_config(git_daemon_config, NULL);
|
||||
if (0 <= service_enabled)
|
||||
enabled = service_enabled;
|
||||
strbuf_addf(&var, "daemon.%s", service->config_name);
|
||||
git_config_get_bool(var.buf, &enabled);
|
||||
strbuf_release(&var);
|
||||
}
|
||||
if (!enabled) {
|
||||
logerror("'%s': service not enabled for '%s'",
|
||||
|
|
|
@ -3274,36 +3274,34 @@ static void parse_option(const char *option)
|
|||
die("This version of fast-import does not support option: %s", option);
|
||||
}
|
||||
|
||||
static int git_pack_config(const char *k, const char *v, void *cb)
|
||||
static void git_pack_config(void)
|
||||
{
|
||||
if (!strcmp(k, "pack.depth")) {
|
||||
max_depth = git_config_int(k, v);
|
||||
int indexversion_value;
|
||||
unsigned long packsizelimit_value;
|
||||
|
||||
if (!git_config_get_ulong("pack.depth", &max_depth)) {
|
||||
if (max_depth > MAX_DEPTH)
|
||||
max_depth = MAX_DEPTH;
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(k, "pack.compression")) {
|
||||
int level = git_config_int(k, v);
|
||||
if (level == -1)
|
||||
level = Z_DEFAULT_COMPRESSION;
|
||||
else if (level < 0 || level > Z_BEST_COMPRESSION)
|
||||
die("bad pack compression level %d", level);
|
||||
pack_compression_level = level;
|
||||
if (!git_config_get_int("pack.compression", &pack_compression_level)) {
|
||||
if (pack_compression_level == -1)
|
||||
pack_compression_level = Z_DEFAULT_COMPRESSION;
|
||||
else if (pack_compression_level < 0 ||
|
||||
pack_compression_level > Z_BEST_COMPRESSION)
|
||||
git_die_config("pack.compression",
|
||||
"bad pack compression level %d", pack_compression_level);
|
||||
pack_compression_seen = 1;
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(k, "pack.indexversion")) {
|
||||
pack_idx_opts.version = git_config_int(k, v);
|
||||
if (!git_config_get_int("pack.indexversion", &indexversion_value)) {
|
||||
pack_idx_opts.version = indexversion_value;
|
||||
if (pack_idx_opts.version > 2)
|
||||
die("bad pack.indexversion=%"PRIu32,
|
||||
pack_idx_opts.version);
|
||||
return 0;
|
||||
git_die_config("pack.indexversion",
|
||||
"bad pack.indexversion=%"PRIu32, pack_idx_opts.version);
|
||||
}
|
||||
if (!strcmp(k, "pack.packsizelimit")) {
|
||||
max_packsize = git_config_ulong(k, v);
|
||||
return 0;
|
||||
}
|
||||
return git_default_config(k, v, cb);
|
||||
if (!git_config_get_ulong("pack.packsizelimit", &packsizelimit_value))
|
||||
max_packsize = packsizelimit_value;
|
||||
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
static const char fast_import_usage[] =
|
||||
|
@ -3356,7 +3354,7 @@ int main(int argc, char **argv)
|
|||
|
||||
setup_git_directory();
|
||||
reset_pack_idx_option(&pack_idx_opts);
|
||||
git_config(git_pack_config, NULL);
|
||||
git_pack_config();
|
||||
if (!pack_compression_seen && core_compression_seen)
|
||||
pack_compression_level = core_compression_level;
|
||||
|
||||
|
|
35
fetch-pack.c
35
fetch-pack.c
|
@ -869,34 +869,15 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
|
|||
return ref;
|
||||
}
|
||||
|
||||
static int fetch_pack_config(const char *var, const char *value, void *cb)
|
||||
static void fetch_pack_config(void)
|
||||
{
|
||||
if (strcmp(var, "fetch.unpacklimit") == 0) {
|
||||
fetch_unpack_limit = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
git_config_get_int("fetch.unpacklimit", &fetch_unpack_limit);
|
||||
git_config_get_int("transfer.unpacklimit", &transfer_unpack_limit);
|
||||
git_config_get_bool("repack.usedeltabaseoffset", &prefer_ofs_delta);
|
||||
git_config_get_bool("fetch.fsckobjects", &fetch_fsck_objects);
|
||||
git_config_get_bool("transfer.fsckobjects", &transfer_fsck_objects);
|
||||
|
||||
if (strcmp(var, "transfer.unpacklimit") == 0) {
|
||||
transfer_unpack_limit = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(var, "repack.usedeltabaseoffset") == 0) {
|
||||
prefer_ofs_delta = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "fetch.fsckobjects")) {
|
||||
fetch_fsck_objects = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(var, "transfer.fsckobjects")) {
|
||||
transfer_fsck_objects = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return git_default_config(var, value, cb);
|
||||
git_config(git_default_config, NULL);
|
||||
}
|
||||
|
||||
static void fetch_pack_setup(void)
|
||||
|
@ -904,7 +885,7 @@ static void fetch_pack_setup(void)
|
|||
static int did_setup;
|
||||
if (did_setup)
|
||||
return;
|
||||
git_config(fetch_pack_config, NULL);
|
||||
fetch_pack_config();
|
||||
if (0 <= transfer_unpack_limit)
|
||||
unpack_limit = transfer_unpack_limit;
|
||||
else if (0 <= fetch_unpack_limit)
|
||||
|
|
|
@ -219,29 +219,22 @@ static void get_idx_file(char *name)
|
|||
send_local_file("application/x-git-packed-objects-toc", name);
|
||||
}
|
||||
|
||||
static int http_config(const char *var, const char *value, void *cb)
|
||||
static void http_config(void)
|
||||
{
|
||||
const char *p;
|
||||
int i, value = 0;
|
||||
struct strbuf var = STRBUF_INIT;
|
||||
|
||||
if (!strcmp(var, "http.getanyfile")) {
|
||||
getanyfile = git_config_bool(var, value);
|
||||
return 0;
|
||||
git_config_get_bool("http.getanyfile", &getanyfile);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(rpc_service); i++) {
|
||||
struct rpc_service *svc = &rpc_service[i];
|
||||
strbuf_addf(&var, "http.%s", svc->config_name);
|
||||
if (!git_config_get_bool(var.buf, &value))
|
||||
svc->enabled = value;
|
||||
strbuf_reset(&var);
|
||||
}
|
||||
|
||||
if (skip_prefix(var, "http.", &p)) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(rpc_service); i++) {
|
||||
struct rpc_service *svc = &rpc_service[i];
|
||||
if (!strcmp(p, svc->config_name)) {
|
||||
svc->enabled = git_config_bool(var, value);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* we are not interested in parsing any other configuration here */
|
||||
return 0;
|
||||
strbuf_release(&var);
|
||||
}
|
||||
|
||||
static struct rpc_service *select_service(const char *name)
|
||||
|
@ -627,7 +620,7 @@ int main(int argc, char **argv)
|
|||
access("git-daemon-export-ok", F_OK) )
|
||||
not_found("Repository not exported: '%s'", dir);
|
||||
|
||||
git_config(http_config, NULL);
|
||||
http_config();
|
||||
cmd->imp(cmd_arg);
|
||||
return 0;
|
||||
}
|
||||
|
|
58
imap-send.c
58
imap-send.c
|
@ -1308,43 +1308,35 @@ static int split_msg(struct strbuf *all_msgs, struct strbuf *msg, int *ofs)
|
|||
|
||||
static char *imap_folder;
|
||||
|
||||
static int git_imap_config(const char *key, const char *val, void *cb)
|
||||
static void git_imap_config(void)
|
||||
{
|
||||
if (!skip_prefix(key, "imap.", &key))
|
||||
return 0;
|
||||
const char *val = NULL;
|
||||
|
||||
/* check booleans first, and barf on others */
|
||||
if (!strcmp("sslverify", key))
|
||||
server.ssl_verify = git_config_bool(key, val);
|
||||
else if (!strcmp("preformattedhtml", key))
|
||||
server.use_html = git_config_bool(key, val);
|
||||
else if (!val)
|
||||
return config_error_nonbool(key);
|
||||
git_config_get_bool("imap.sslverify", &server.ssl_verify);
|
||||
git_config_get_bool("imap.preformattedhtml", &server.use_html);
|
||||
git_config_get_string("imap.folder", &imap_folder);
|
||||
|
||||
if (!strcmp("folder", key)) {
|
||||
imap_folder = xstrdup(val);
|
||||
} else if (!strcmp("host", key)) {
|
||||
if (starts_with(val, "imap:"))
|
||||
val += 5;
|
||||
else if (starts_with(val, "imaps:")) {
|
||||
val += 6;
|
||||
server.use_ssl = 1;
|
||||
if (!git_config_get_value("imap.host", &val)) {
|
||||
if (!val) {
|
||||
git_die_config("imap.host", "Missing value for 'imap.host'");
|
||||
} else {
|
||||
if (starts_with(val, "imap:"))
|
||||
val += 5;
|
||||
else if (starts_with(val, "imaps:")) {
|
||||
val += 6;
|
||||
server.use_ssl = 1;
|
||||
}
|
||||
if (starts_with(val, "//"))
|
||||
val += 2;
|
||||
server.host = xstrdup(val);
|
||||
}
|
||||
if (starts_with(val, "//"))
|
||||
val += 2;
|
||||
server.host = xstrdup(val);
|
||||
} else if (!strcmp("user", key))
|
||||
server.user = xstrdup(val);
|
||||
else if (!strcmp("pass", key))
|
||||
server.pass = xstrdup(val);
|
||||
else if (!strcmp("port", key))
|
||||
server.port = git_config_int(key, val);
|
||||
else if (!strcmp("tunnel", key))
|
||||
server.tunnel = xstrdup(val);
|
||||
else if (!strcmp("authmethod", key))
|
||||
server.auth_method = xstrdup(val);
|
||||
}
|
||||
|
||||
return 0;
|
||||
git_config_get_string("imap.user", &server.user);
|
||||
git_config_get_string("imap.pass", &server.pass);
|
||||
git_config_get_int("imap.port", &server.port);
|
||||
git_config_get_string("imap.tunnel", &server.tunnel);
|
||||
git_config_get_string("imap.authmethod", &server.auth_method);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -1365,7 +1357,7 @@ int main(int argc, char **argv)
|
|||
usage(imap_send_usage);
|
||||
|
||||
setup_git_directory_gently(&nongit_ok);
|
||||
git_config(git_imap_config, NULL);
|
||||
git_imap_config();
|
||||
|
||||
if (!server.port)
|
||||
server.port = server.use_ssl ? 993 : 143;
|
||||
|
|
23
ll-merge.c
23
ll-merge.c
|
@ -225,11 +225,8 @@ static int read_merge_config(const char *var, const char *value, void *cb)
|
|||
const char *key, *name;
|
||||
int namelen;
|
||||
|
||||
if (!strcmp(var, "merge.default")) {
|
||||
if (value)
|
||||
default_ll_merge = xstrdup(value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "merge.default"))
|
||||
return git_config_string(&default_ll_merge, var, value);
|
||||
|
||||
/*
|
||||
* We are not interested in anything but "merge.<name>.variable";
|
||||
|
@ -254,12 +251,8 @@ static int read_merge_config(const char *var, const char *value, void *cb)
|
|||
ll_user_merge_tail = &(fn->next);
|
||||
}
|
||||
|
||||
if (!strcmp("name", key)) {
|
||||
if (!value)
|
||||
return error("%s: lacks value", var);
|
||||
fn->description = xstrdup(value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp("name", key))
|
||||
return git_config_string(&fn->description, var, value);
|
||||
|
||||
if (!strcmp("driver", key)) {
|
||||
if (!value)
|
||||
|
@ -285,12 +278,8 @@ static int read_merge_config(const char *var, const char *value, void *cb)
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp("recursive", key)) {
|
||||
if (!value)
|
||||
return error("%s: lacks value", var);
|
||||
fn->recursive = xstrdup(value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp("recursive", key))
|
||||
return git_config_string(&fn->recursive, var, value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2026,22 +2026,12 @@ int merge_recursive_generic(struct merge_options *o,
|
|||
return clean ? 0 : 1;
|
||||
}
|
||||
|
||||
static int merge_recursive_config(const char *var, const char *value, void *cb)
|
||||
static void merge_recursive_config(struct merge_options *o)
|
||||
{
|
||||
struct merge_options *o = cb;
|
||||
if (!strcmp(var, "merge.verbosity")) {
|
||||
o->verbosity = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "diff.renamelimit")) {
|
||||
o->diff_rename_limit = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
if (!strcmp(var, "merge.renamelimit")) {
|
||||
o->merge_rename_limit = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
return git_xmerge_config(var, value, cb);
|
||||
git_config_get_int("merge.verbosity", &o->verbosity);
|
||||
git_config_get_int("diff.renamelimit", &o->diff_rename_limit);
|
||||
git_config_get_int("merge.renamelimit", &o->merge_rename_limit);
|
||||
git_config(git_xmerge_config, NULL);
|
||||
}
|
||||
|
||||
void init_merge_options(struct merge_options *o)
|
||||
|
@ -2052,7 +2042,7 @@ void init_merge_options(struct merge_options *o)
|
|||
o->diff_rename_limit = -1;
|
||||
o->merge_rename_limit = -1;
|
||||
o->renormalize = 0;
|
||||
git_config(merge_recursive_config, o);
|
||||
merge_recursive_config(o);
|
||||
if (getenv("GIT_MERGE_VERBOSITY"))
|
||||
o->verbosity =
|
||||
strtol(getenv("GIT_MERGE_VERBOSITY"), NULL, 10);
|
||||
|
|
44
pager.c
44
pager.c
|
@ -6,12 +6,6 @@
|
|||
#define DEFAULT_PAGER "less"
|
||||
#endif
|
||||
|
||||
struct pager_config {
|
||||
const char *cmd;
|
||||
int want;
|
||||
char *value;
|
||||
};
|
||||
|
||||
/*
|
||||
* This is split up from the rest of git so that we can do
|
||||
* something different on Windows.
|
||||
|
@ -155,30 +149,22 @@ int decimal_width(int number)
|
|||
return width;
|
||||
}
|
||||
|
||||
static int pager_command_config(const char *var, const char *value, void *data)
|
||||
{
|
||||
struct pager_config *c = data;
|
||||
if (starts_with(var, "pager.") && !strcmp(var + 6, c->cmd)) {
|
||||
int b = git_config_maybe_bool(var, value);
|
||||
if (b >= 0)
|
||||
c->want = b;
|
||||
else {
|
||||
c->want = 1;
|
||||
c->value = xstrdup(value);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* returns 0 for "no pager", 1 for "use pager", and -1 for "not specified" */
|
||||
int check_pager_config(const char *cmd)
|
||||
{
|
||||
struct pager_config c;
|
||||
c.cmd = cmd;
|
||||
c.want = -1;
|
||||
c.value = NULL;
|
||||
git_config(pager_command_config, &c);
|
||||
if (c.value)
|
||||
pager_program = c.value;
|
||||
return c.want;
|
||||
int want = -1;
|
||||
struct strbuf key = STRBUF_INIT;
|
||||
const char *value = NULL;
|
||||
strbuf_addf(&key, "pager.%s", cmd);
|
||||
if (!git_config_get_value(key.buf, &value)) {
|
||||
int b = git_config_maybe_bool(key.buf, value);
|
||||
if (b >= 0)
|
||||
want = b;
|
||||
else {
|
||||
want = 1;
|
||||
pager_program = xstrdup(value);
|
||||
}
|
||||
}
|
||||
strbuf_release(&key);
|
||||
return want;
|
||||
}
|
||||
|
|
14
read-cache.c
14
read-cache.c
|
@ -1246,24 +1246,16 @@ static struct cache_entry *refresh_cache_entry(struct cache_entry *ce,
|
|||
|
||||
#define INDEX_FORMAT_DEFAULT 3
|
||||
|
||||
static int index_format_config(const char *var, const char *value, void *cb)
|
||||
{
|
||||
unsigned int *version = cb;
|
||||
if (!strcmp(var, "index.version")) {
|
||||
*version = git_config_int(var, value);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static unsigned int get_index_format_default(void)
|
||||
{
|
||||
char *envversion = getenv("GIT_INDEX_VERSION");
|
||||
char *endp;
|
||||
int value;
|
||||
unsigned int version = INDEX_FORMAT_DEFAULT;
|
||||
|
||||
if (!envversion) {
|
||||
git_config(index_format_config, &version);
|
||||
if (!git_config_get_int("index.version", &value))
|
||||
version = value;
|
||||
if (version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < version) {
|
||||
warning(_("index.version set, but the value is invalid.\n"
|
||||
"Using version %i"), INDEX_FORMAT_DEFAULT);
|
||||
|
|
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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче