diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt index e0deaf3144..25c0917524 100644 --- a/Documentation/config/advice.txt +++ b/Documentation/config/advice.txt @@ -45,6 +45,9 @@ advice.*:: Advice shown when linkgit:git-fetch[1] takes a long time to calculate forced updates after ref updates, or to warn that the check is disabled. + forceDeleteBranch:: + Advice shown when a user tries to delete a not fully merged + branch without the force option set. ignoredHook:: Advice shown if a hook is ignored because the hook is not set as executable. diff --git a/advice.c b/advice.c index 03322caba0..f6e4c2f302 100644 --- a/advice.c +++ b/advice.c @@ -47,6 +47,7 @@ static struct { [ADVICE_DETACHED_HEAD] = { "detachedHead", 1 }, [ADVICE_DIVERGING] = { "diverging", 1 }, [ADVICE_FETCH_SHOW_FORCED_UPDATES] = { "fetchShowForcedUpdates", 1 }, + [ADVICE_FORCE_DELETE_BRANCH] = { "forceDeleteBranch", 1 }, [ADVICE_GRAFT_FILE_DEPRECATED] = { "graftFileDeprecated", 1 }, [ADVICE_IGNORED_HOOK] = { "ignoredHook", 1 }, [ADVICE_IMPLICIT_IDENTITY] = { "implicitIdentity", 1 }, diff --git a/advice.h b/advice.h index 74d44d1156..9d4f49ae38 100644 --- a/advice.h +++ b/advice.h @@ -21,6 +21,7 @@ enum advice_type { ADVICE_DETACHED_HEAD, ADVICE_DIVERGING, ADVICE_FETCH_SHOW_FORCED_UPDATES, + ADVICE_FORCE_DELETE_BRANCH, ADVICE_GRAFT_FILE_DEPRECATED, ADVICE_IGNORED_HOOK, ADVICE_IMPLICIT_IDENTITY, diff --git a/builtin/branch.c b/builtin/branch.c index 0a32d1b6c8..cfb63cce5f 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -24,6 +24,7 @@ #include "ref-filter.h" #include "worktree.h" #include "help.h" +#include "advice.h" #include "commit-reach.h" static const char * const builtin_branch_usage[] = { @@ -190,9 +191,10 @@ static int check_branch_commit(const char *branchname, const char *refname, return -1; } if (!force && !branch_merged(kinds, branchname, rev, head_rev)) { - error(_("the branch '%s' is not fully merged.\n" - "If you are sure you want to delete it, " - "run 'git branch -D %s'"), branchname, branchname); + error(_("the branch '%s' is not fully merged"), branchname); + advise_if_enabled(ADVICE_FORCE_DELETE_BRANCH, + _("If you are sure you want to delete it, " + "run 'git branch -D %s'"), branchname); return -1; } return 0;