diff options
-rw-r--r-- | Documentation/config.txt | 11 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | advice.c | 25 | ||||
-rw-r--r-- | advice.h | 8 | ||||
-rw-r--r-- | builtin-push.c | 2 | ||||
-rw-r--r-- | cache.h | 1 | ||||
-rw-r--r-- | config.c | 3 |
7 files changed, 51 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 5256c7fb81..a35b9181bc 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -113,6 +113,17 @@ For command-specific variables, you will find a more detailed description in the appropriate manual page. You will find a description of non-core porcelain configuration variables in the respective porcelain documentation. +advice.*:: + When set to 'true', display the given optional help message. + When set to 'false', do not display. The configuration variables + are: ++ +-- + pushNonFastForward:: + Advice shown when linkgit:git-push[1] refuses + non-fast-forward refs. Default: true. +-- + core.fileMode:: If false, the executable bit differences between the index and the working copy are ignored; useful on broken filesystems like FAT. @@ -397,6 +397,7 @@ export PERL_PATH LIB_FILE=libgit.a XDIFF_LIB=xdiff/lib.a +LIB_H += advice.h LIB_H += archive.h LIB_H += attr.h LIB_H += blob.h @@ -454,6 +455,7 @@ LIB_H += utf8.h LIB_H += wt-status.h LIB_OBJS += abspath.o +LIB_OBJS += advice.o LIB_OBJS += alias.o LIB_OBJS += alloc.o LIB_OBJS += archive.o diff --git a/advice.c b/advice.c new file mode 100644 index 0000000000..b5216a2456 --- /dev/null +++ b/advice.c @@ -0,0 +1,25 @@ +#include "cache.h" + +int advice_push_nonfastforward = 1; + +static struct { + const char *name; + int *preference; +} advice_config[] = { + { "pushnonfastforward", &advice_push_nonfastforward }, +}; + +int git_default_advice_config(const char *var, const char *value) +{ + const char *k = skip_prefix(var, "advice."); + int i; + + for (i = 0; i < ARRAY_SIZE(advice_config); i++) { + if (strcmp(k, advice_config[i].name)) + continue; + *advice_config[i].preference = git_config_bool(var, value); + return 0; + } + + return 0; +} diff --git a/advice.h b/advice.h new file mode 100644 index 0000000000..862bae37b8 --- /dev/null +++ b/advice.h @@ -0,0 +1,8 @@ +#ifndef ADVICE_H +#define ADVICE_H + +extern int advice_push_nonfastforward; + +int git_default_advice_config(const char *var, const char *value); + +#endif /* ADVICE_H */ diff --git a/builtin-push.c b/builtin-push.c index 787011f928..6eda372a55 100644 --- a/builtin-push.c +++ b/builtin-push.c @@ -157,7 +157,7 @@ static int do_push(const char *repo, int flags) continue; error("failed to push some refs to '%s'", url[i]); - if (nonfastforward) { + if (nonfastforward && advice_push_nonfastforward) { printf("To prevent you from losing history, non-fast-forward updates were rejected\n" "Merge the remote changes before pushing again. See the 'non-fast forward'\n" "section of 'git push --help' for details.\n"); @@ -4,6 +4,7 @@ #include "git-compat-util.h" #include "strbuf.h" #include "hash.h" +#include "advice.h" #include SHA1_HEADER #ifndef git_SHA_CTX @@ -627,6 +627,9 @@ int git_default_config(const char *var, const char *value, void *dummy) if (!prefixcmp(var, "mailmap.")) return git_default_mailmap_config(var, value); + if (!prefixcmp(var, "advice.")) + return git_default_advice_config(var, value); + if (!strcmp(var, "pager.color") || !strcmp(var, "color.pager")) { pager_use_color = git_config_bool(var,value); return 0; |