Merge branch 'jk/unwanted-advices'
* jk/unwanted-advices: status: make "how to stage" messages optional push: make non-fast-forward help message configurable
This commit is contained in:
commit
dc1b0c06ee
@ -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
|
in the appropriate manual page. You will find a description of non-core
|
||||||
porcelain configuration variables in the respective porcelain documentation.
|
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::
|
core.fileMode::
|
||||||
If false, the executable bit differences between the index and
|
If false, the executable bit differences between the index and
|
||||||
the working copy are ignored; useful on broken filesystems like FAT.
|
the working copy are ignored; useful on broken filesystems like FAT.
|
||||||
|
2
Makefile
2
Makefile
@ -400,6 +400,7 @@ export PERL_PATH
|
|||||||
LIB_FILE=libgit.a
|
LIB_FILE=libgit.a
|
||||||
XDIFF_LIB=xdiff/lib.a
|
XDIFF_LIB=xdiff/lib.a
|
||||||
|
|
||||||
|
LIB_H += advice.h
|
||||||
LIB_H += archive.h
|
LIB_H += archive.h
|
||||||
LIB_H += attr.h
|
LIB_H += attr.h
|
||||||
LIB_H += blob.h
|
LIB_H += blob.h
|
||||||
@ -457,6 +458,7 @@ LIB_H += utf8.h
|
|||||||
LIB_H += wt-status.h
|
LIB_H += wt-status.h
|
||||||
|
|
||||||
LIB_OBJS += abspath.o
|
LIB_OBJS += abspath.o
|
||||||
|
LIB_OBJS += advice.o
|
||||||
LIB_OBJS += alias.o
|
LIB_OBJS += alias.o
|
||||||
LIB_OBJS += alloc.o
|
LIB_OBJS += alloc.o
|
||||||
LIB_OBJS += archive.o
|
LIB_OBJS += archive.o
|
||||||
|
27
advice.c
Normal file
27
advice.c
Normal file
@ -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
advice.h
Normal file
9
advice.h
Normal file
@ -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 */
|
@ -157,7 +157,7 @@ static int do_push(const char *repo, int flags)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
error("failed to push some refs to '%s'", url[i]);
|
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"
|
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"
|
"Merge the remote changes before pushing again. See the 'non-fast forward'\n"
|
||||||
"section of 'git push --help' for details.\n");
|
"section of 'git push --help' for details.\n");
|
||||||
|
1
cache.h
1
cache.h
@ -4,6 +4,7 @@
|
|||||||
#include "git-compat-util.h"
|
#include "git-compat-util.h"
|
||||||
#include "strbuf.h"
|
#include "strbuf.h"
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
|
#include "advice.h"
|
||||||
|
|
||||||
#include SHA1_HEADER
|
#include SHA1_HEADER
|
||||||
#ifndef git_SHA_CTX
|
#ifndef git_SHA_CTX
|
||||||
|
3
config.c
3
config.c
@ -627,6 +627,9 @@ int git_default_config(const char *var, const char *value, void *dummy)
|
|||||||
if (!prefixcmp(var, "mailmap."))
|
if (!prefixcmp(var, "mailmap."))
|
||||||
return git_default_mailmap_config(var, value);
|
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")) {
|
if (!strcmp(var, "pager.color") || !strcmp(var, "color.pager")) {
|
||||||
pager_use_color = git_config_bool(var,value);
|
pager_use_color = git_config_bool(var,value);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -48,6 +48,8 @@ static void wt_status_print_unmerged_header(struct wt_status *s)
|
|||||||
{
|
{
|
||||||
const char *c = color(WT_STATUS_HEADER, s);
|
const char *c = color(WT_STATUS_HEADER, s);
|
||||||
color_fprintf_ln(s->fp, c, "# Unmerged paths:");
|
color_fprintf_ln(s->fp, c, "# Unmerged paths:");
|
||||||
|
if (!advice_status_hints)
|
||||||
|
return;
|
||||||
if (!s->is_initial)
|
if (!s->is_initial)
|
||||||
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
||||||
else
|
else
|
||||||
@ -60,6 +62,8 @@ static void wt_status_print_cached_header(struct wt_status *s)
|
|||||||
{
|
{
|
||||||
const char *c = color(WT_STATUS_HEADER, s);
|
const char *c = color(WT_STATUS_HEADER, s);
|
||||||
color_fprintf_ln(s->fp, c, "# Changes to be committed:");
|
color_fprintf_ln(s->fp, c, "# Changes to be committed:");
|
||||||
|
if (!advice_status_hints)
|
||||||
|
return;
|
||||||
if (!s->is_initial) {
|
if (!s->is_initial) {
|
||||||
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
color_fprintf_ln(s->fp, c, "# (use \"git reset %s <file>...\" to unstage)", s->reference);
|
||||||
} else {
|
} else {
|
||||||
@ -73,6 +77,8 @@ static void wt_status_print_dirty_header(struct wt_status *s,
|
|||||||
{
|
{
|
||||||
const char *c = color(WT_STATUS_HEADER, s);
|
const char *c = color(WT_STATUS_HEADER, s);
|
||||||
color_fprintf_ln(s->fp, c, "# Changed but not updated:");
|
color_fprintf_ln(s->fp, c, "# Changed but not updated:");
|
||||||
|
if (!advice_status_hints)
|
||||||
|
return;
|
||||||
if (!has_deleted)
|
if (!has_deleted)
|
||||||
color_fprintf_ln(s->fp, c, "# (use \"git add <file>...\" to update what will be committed)");
|
color_fprintf_ln(s->fp, c, "# (use \"git add <file>...\" to update what will be committed)");
|
||||||
else
|
else
|
||||||
@ -85,6 +91,8 @@ static void wt_status_print_untracked_header(struct wt_status *s)
|
|||||||
{
|
{
|
||||||
const char *c = color(WT_STATUS_HEADER, s);
|
const char *c = color(WT_STATUS_HEADER, s);
|
||||||
color_fprintf_ln(s->fp, c, "# Untracked files:");
|
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, "# (use \"git add <file>...\" to include in what will be committed)");
|
||||||
color_fprintf_ln(s->fp, c, "#");
|
color_fprintf_ln(s->fp, c, "#");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user