Skip to content

Commit

Permalink
rm: introduce advice.rmHints to shorten messages
Browse files Browse the repository at this point in the history
Introduce advice.rmHints to choose whether to display advice or not
when git rm fails. Defaults to true, in order to preserve current behavior.

As an example, the message:
	error: 'foo.txt' has changes staged in the index
	(use --cached to keep the file, or -f to force removal)

would look like, with advice.rmHints=false:
	error: 'foo.txt' has changes staged in the index

Signed-off-by: Mathieu Lienard--Mayor <[email protected]>
Signed-off-by: Jorge Juan Garcia Garcia <[email protected]>
Signed-off-by: Matthieu Moy <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
Mathieu Lienard--Mayor authored and gitster committed Jun 12, 2013
1 parent 914dc02 commit 7e30944
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 1 deletion.
3 changes: 3 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@ advice.*::
amWorkDir::
Advice that shows the location of the patch file when
linkgit:git-am[1] fails to apply it.
rmHints::
In case of failure in the output of linkgit:git-rm[1],
show directions on how to proceed from the current state.
--

core.fileMode::
Expand Down
2 changes: 2 additions & 0 deletions advice.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ int advice_resolve_conflict = 1;
int advice_implicit_identity = 1;
int advice_detached_head = 1;
int advice_set_upstream_failure = 1;
int advice_rm_hints = 1;

static struct {
const char *name;
Expand All @@ -33,6 +34,7 @@ static struct {
{ "implicitidentity", &advice_implicit_identity },
{ "detachedhead", &advice_detached_head },
{ "setupstreamfailure", &advice_set_upstream_failure },
{ "rmhints", &advice_rm_hints },

/* make this an alias for backward compatibility */
{ "pushnonfastforward", &advice_push_update_rejected }
Expand Down
1 change: 1 addition & 0 deletions advice.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ extern int advice_resolve_conflict;
extern int advice_implicit_identity;
extern int advice_detached_head;
extern int advice_set_upstream_failure;
extern int advice_rm_hints;

int git_default_advice_config(const char *var, const char *value);
void advise(const char *advice, ...);
Expand Down
3 changes: 2 additions & 1 deletion builtin/rm.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ static void print_error_files(struct string_list *files_list,
strbuf_addf(&err_msg,
"\n %s",
files_list->items[i].string);
strbuf_addstr(&err_msg, hints_msg);
if (advice_rm_hints)
strbuf_addstr(&err_msg, hints_msg);
*errs = error("%s", err_msg.buf);
strbuf_release(&err_msg);
}
Expand Down
29 changes: 29 additions & 0 deletions t/t3600-rm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,18 @@ test_expect_success 'rm files with different staged content' '
test_i18ncmp expect actual
'

test_expect_success 'rm files with different staged content without hints' '
cat >expect <<-\EOF &&
error: the following files have staged content different from both the
file and the HEAD:
bar.txt
foo.txt
EOF
echo content2 >foo.txt &&
echo content2 >bar.txt &&
test_must_fail git -c advice.rmhints=false rm foo.txt bar.txt 2>actual &&
test_i18ncmp expect actual
'

test_expect_success 'rm file with local modification' '
cat >expect <<-\EOF &&
Expand All @@ -720,6 +732,15 @@ test_expect_success 'rm file with local modification' '
test_i18ncmp expect actual
'

test_expect_success 'rm file with local modification without hints' '
cat >expect <<-\EOF &&
error: the following file has local modifications:
bar.txt
EOF
echo content4 >bar.txt &&
test_must_fail git -c advice.rmhints=false rm bar.txt 2>actual &&
test_i18ncmp expect actual
'

test_expect_success 'rm file with changes in the index' '
cat >expect <<-\EOF &&
Expand All @@ -734,6 +755,14 @@ test_expect_success 'rm file with changes in the index' '
test_i18ncmp expect actual
'

test_expect_success 'rm file with changes in the index without hints' '
cat >expect <<-\EOF &&
error: the following file has changes staged in the index:
foo.txt
EOF
test_must_fail git -c advice.rmhints=false rm foo.txt 2>actual &&
test_i18ncmp expect actual
'

test_expect_success 'rm files with two different errors' '
cat >expect <<-\EOF &&
Expand Down

0 comments on commit 7e30944

Please sign in to comment.