Skip to content

Commit

Permalink
Merge branch 'jk/unwanted-advices'
Browse files Browse the repository at this point in the history
* jk/unwanted-advices:
  status: make "how to stage" messages optional
  push: make non-fast-forward help message configurable
  • Loading branch information
gitster committed Sep 13, 2009
2 parents 8b54f63 + edf563f commit dc1b0c0
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 1 deletion.
15 changes: 15 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
27 changes: 27 additions & 0 deletions advice.c
Original file line number Diff line number Diff line change
@@ -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;
}
9 changes: 9 additions & 0 deletions advice.h
Original file line number Diff line number Diff line change
@@ -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 */
2 changes: 1 addition & 1 deletion builtin-push.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
1 change: 1 addition & 0 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions config.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
8 changes: 8 additions & 0 deletions wt-status.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand All @@ -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
Expand All @@ -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, "#");
}
Expand Down

0 comments on commit dc1b0c0

Please sign in to comment.