mirror of
https://github.com/git/git.git
synced 2024-09-28 20:51:42 +02:00
38 lines
908 B
C
38 lines
908 B
C
|
#include "cache.h"
|
||
|
#include "hook.h"
|
||
|
#include "run-command.h"
|
||
|
|
||
|
const char *find_hook(const char *name)
|
||
|
{
|
||
|
static struct strbuf path = STRBUF_INIT;
|
||
|
|
||
|
strbuf_reset(&path);
|
||
|
strbuf_git_path(&path, "hooks/%s", name);
|
||
|
if (access(path.buf, X_OK) < 0) {
|
||
|
int err = errno;
|
||
|
|
||
|
#ifdef STRIP_EXTENSION
|
||
|
strbuf_addstr(&path, STRIP_EXTENSION);
|
||
|
if (access(path.buf, X_OK) >= 0)
|
||
|
return path.buf;
|
||
|
if (errno == EACCES)
|
||
|
err = errno;
|
||
|
#endif
|
||
|
|
||
|
if (err == EACCES && advice_enabled(ADVICE_IGNORED_HOOK)) {
|
||
|
static struct string_list advise_given = STRING_LIST_INIT_DUP;
|
||
|
|
||
|
if (!string_list_lookup(&advise_given, name)) {
|
||
|
string_list_insert(&advise_given, name);
|
||
|
advise(_("The '%s' hook was ignored because "
|
||
|
"it's not set as executable.\n"
|
||
|
"You can disable this warning with "
|
||
|
"`git config advice.ignoredHook false`."),
|
||
|
path.buf);
|
||
|
}
|
||
|
}
|
||
|
return NULL;
|
||
|
}
|
||
|
return path.buf;
|
||
|
}
|