---
Documentation/config.txt | 2 ++
advice.c | 2 ++
advice.h | 1 +
contrib/completion/git-completion.bash | 1 +
run-command.c | 4 ++++
5 files changed, 10 insertions(+)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 1ac0ae6adb046..83b1884cf22fc 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -351,6 +351,8 @@ advice.*::
addEmbeddedRepo::
Advice on what to do when you've accidentally added one
git repo inside of another.
+ hookNotExecutable::
+ Shown when an hook is there but not executable.
--
core.fileMode::
diff --git a/advice.c b/advice.c
index d81e1cb7425b0..969ba149daeec 100644
--- a/advice.c
+++ b/advice.c
@@ -17,6 +17,7 @@ int advice_set_upstream_failure = 1;
int advice_object_name_warning = 1;
int advice_rm_hints = 1;
int advice_add_embedded_repo = 1;
+int advice_hook_not_executable = 1;
static struct {
const char *name;
@@ -38,6 +39,7 @@ static struct {
{ "objectnamewarning", &advice_object_name_warning },
{ "rmhints", &advice_rm_hints },
{ "addembeddedrepo", &advice_add_embedded_repo },
+ { "hooknotexecutable", &advice_hook_not_executable},
/* make this an alias for backward compatibility */
{ "pushnonfastforward", &advice_push_update_rejected }
diff --git a/advice.h b/advice.h
index c84a44531c7d8..061492976b362 100644
--- a/advice.h
+++ b/advice.h
@@ -19,6 +19,7 @@ extern int advice_set_upstream_failure;
extern int advice_object_name_warning;
extern int advice_rm_hints;
extern int advice_add_embedded_repo;
+extern int advice_hook_not_executable;
int git_default_advice_config(const char *var, const char *value);
__attribute__((format (printf, 1, 2)))
diff --git a/contrib/completion/git-completion.bash
b/contrib/completion/git-completion.bash
index d93441747523a..6324db0c44f17 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2350,6 +2350,7 @@ _git_config ()
advice.rmHints
advice.statusHints
advice.statusUoption
+ advice.hookNotExecutable
alias.
am.keepcr
am.threeWay
diff --git a/run-command.c b/run-command.c
index b5e6eb37c0eb3..95d93a23bf87e 100644
--- a/run-command.c
+++ b/run-command.c
@@ -1174,6 +1174,10 @@ const char *find_hook(const char *name)
if (access(path.buf, X_OK) >= 0)
return path.buf;
#endif
+ if (advice_hook_not_executable) {
+ advise(_("The '%s' hook was ignored because it's not
set as executable."
+ "\nYou can disable this warning with `git
config advice.hookNotExecutable false`"), name);
+ }
return NULL;
}
return path.buf;
--
https://github.com/git/git/pull/411