diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-09-13 01:33:18 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-09-13 01:33:18 -0700 |
commit | dc1b0c06ee9b3d2fb086a89e5b12da35bf360e4c (patch) | |
tree | 4097a3e7f1507c66ef4effc9d2da243c6382a3ed | |
parent | 8b54f63dce34c3bbd7ff919fb53c1c253221fe71 (diff) | |
parent | edf563fbaa2ab50734db4a61e9092f25fbb5a417 (diff) | |
download | git-dc1b0c06ee9b3d2fb086a89e5b12da35bf360e4c.tar.gz git-dc1b0c06ee9b3d2fb086a89e5b12da35bf360e4c.tar.xz |
Merge branch 'jk/unwanted-advices'
* jk/unwanted-advices:
status: make "how to stage" messages optional
push: make non-fast-forward help message configurable
-rw-r--r-- | Documentation/config.txt | 15 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | advice.c | 27 | ||||
-rw-r--r-- | advice.h | 9 | ||||
-rw-r--r-- | builtin-push.c | 2 | ||||
-rw-r--r-- | cache.h | 1 | ||||
-rw-r--r-- | config.c | 3 | ||||
-rw-r--r-- | wt-status.c | 8 |
8 files changed, 66 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 5256c7fb8..8cbabe801 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -113,6 +113,21 @@ 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. + statusHints:: + Directions on how to stage/unstage/add shown in the + output of linkgit:git-status[1] and the template shown + when writing commit messages. 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. @@ -400,6 +400,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 @@ -457,6 +458,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 000000000..ae4b1e81d --- /dev/null +++ b/advice.c @@ -0,0 +1,27 @@ +#include "cache.h" + +int advice_push_nonfastforward = 1; +int advice_status_hints = 1; + +static struct { + const char *name; + int *preference; +} advice_config[] = { + { "pushnonfastforward", &advice_push_nonfastforward }, + { "statushints", &advice_status_hints }, +}; + +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 000000000..e9df8e026 --- /dev/null +++ b/advice.h @@ -0,0 +1,9 @@ +#ifndef ADVICE_H +#define ADVICE_H + +extern int advice_push_nonfastforward; +extern int advice_status_hints; + +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 787011f92..6eda372a5 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; diff --git a/wt-status.c b/wt-status.c index 85f3fcb8a..38eb24536 100644 --- a/wt-status.c +++ b/wt-status.c @@ -48,6 +48,8 @@ static void wt_status_print_unmerged_header(struct wt_status *s) { const char *c = color(WT_STATUS_HEADER, s); color_fprintf_ln(s->fp, c, "# Unmerged paths:"); + if (!advice_status_hints) + return; if (!s->is_initial) color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference); else @@ -60,6 +62,8 @@ static void wt_status_print_cached_header(struct wt_status *s) { const char *c = color(WT_STATUS_HEADER, s); color_fprintf_ln(s->fp, c, "# Changes to be committed:"); + if (!advice_status_hints) + return; if (!s->is_initial) { color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference); } else { @@ -73,6 +77,8 @@ static void wt_status_print_dirty_header(struct wt_status *s, { const char *c = color(WT_STATUS_HEADER, s); color_fprintf_ln(s->fp, c, "# Changed but not updated:"); + if (!advice_status_hints) + return; if (!has_deleted) color_fprintf_ln(s->fp, c, "# (use \"git add <file>...\" to update what will be committed)"); else @@ -85,6 +91,8 @@ static void wt_status_print_untracked_header(struct wt_status *s) { const char *c = color(WT_STATUS_HEADER, s); color_fprintf_ln(s->fp, c, "# Untracked files:"); + if (!advice_status_hints) + return; color_fprintf_ln(s->fp, c, "# (use \"git add <file>...\" to include in what will be committed)"); color_fprintf_ln(s->fp, c, "#"); } |