From: "SZEDER Gábor" <szeder@ira.uka.de>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: "SZEDER Gábor" <szeder@ira.uka.de>,
"Junio C Hamano" <gitster@pobox.com>,
git@vger.kernel.org
Subject: Re: [PATCH] hooks: Add ability to specify where the hook directory is
Date: Sat, 23 Apr 2016 02:13:02 +0200 [thread overview]
Message-ID: <1461370382-16524-1-git-send-email-szeder@ira.uka.de> (raw)
In-Reply-To: <1461367997-28745-1-git-send-email-avarab@gmail.com>
> Change the hardcoded lookup for .git/hooks/* to optionally lookup in
> $(git config core.hooksDirectory)/* instead if that config key is set.
>
> This is essentially a more intrusive version of the git-init ability to
> specify hooks on init time via init templates.
>
> The difference between that facility and this feature is that this can
> be set up after the fact via e.g. ~/.gitconfig or /etc/gitconfig to
> apply for all your personal repositories, or all repositories on the
> system.
>
> I plan on using this on a centralized Git server where users can create
> arbitrary repositories under /gitroot, but I'd like to manage all the
> hooks that should be run centrally via a unified dispatch mechanism.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
> Documentation/config.txt | 10 ++++++++++
> Documentation/githooks.txt | 5 ++++-
> cache.h | 1 +
> config.c | 3 +++
> environment.c | 1 +
> run-command.c | 5 ++++-
> t/t1350-config-hooks-directory.sh | 35 +++++++++++++++++++++++++++++++++++
> 7 files changed, 58 insertions(+), 2 deletions(-)
> create mode 100755 t/t1350-config-hooks-directory.sh
>
> diff --git a/Documentation/config.txt b/Documentation/config.txt
> index 42d2b50..2faf3c0 100644
> --- a/Documentation/config.txt
> +++ b/Documentation/config.txt
> @@ -618,6 +618,16 @@ core.attributesFile::
> $XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not
> set or empty, $HOME/.config/git/attributes is used instead.
>
> +core.hooksDirectory::
> + By default Git will look for your hooks in the '$GIT_DIR/hooks'
> + directory. Set this to different absolute directory name,
Mental note: here you say that it should be an absolute directory.
> + e.g. '/etc/git/hooks', and Git will try to find your hooks that
s/hooks that/hooks in that/
> + directory, e.g. '/etc/git/hooks/pre-receive' instead of in
> + '$GIT_DIR/hooks'.
> ++
> +This is useful in cases where you'd like to centrally configure your
> +Git hooks instead of configuring them on a per-repository basis.
> +
> core.editor::
> Commands such as `commit` and `tag` that lets you edit
> messages by launching an editor uses the value of this
> diff --git a/t/t1350-config-hooks-directory.sh b/t/t1350-config-hooks-directory.sh
> new file mode 100755
> index 0000000..556c1d3
> --- /dev/null
> +++ b/t/t1350-config-hooks-directory.sh
> @@ -0,0 +1,35 @@
> +#!/bin/sh
> +
> +test_description='Test the core.hooksDirectory configuration variable'
> +
> +. ./test-lib.sh
> +
> +test_expect_success 'set up a pre-commit hook in core.hooksDirectory' '
> + mkdir -p .git/custom-hooks .git/hooks &&
> + cat >.git/custom-hooks/pre-commit <<EOF &&
> +#!$SHELL_PATH
> +printf "%s" "." >>.git/PRE-COMMIT-HOOK-WAS-CALLED
> +EOF
> + cat >.git/hooks/pre-commit <<EOF &&
> + chmod +x .git/hooks/pre-commit
> +#!$SHELL_PATH
> +printf "%s" "SHOULD NOT BE CALLED" >>.git/PRE-COMMIT-HOOK-WAS-CALLED
> +EOF
> + chmod +x .git/custom-hooks/pre-commit
> +'
Please use the 'write_script' helper for, well, writing scripts.
> +
> +test_expect_success 'Check that various forms of specifying core.hooksDirectory work' '
> + test_commit no_custom_hook &&
> + git config core.hooksDirectory .git/custom-hooks &&
> + test_commit have_custom_hook &&
> + git config core.hooksDirectory .git/custom-hooks/ &&
> + test_commit have_custom_hook_trailing_slash &&
These two cases ensure that it should work even when the configured
hook directory is given as a relative path, though the docs say it
should be an absolute path.
> + git config core.hooksDirectory "$PWD/.git/custom-hooks" &&
> + test_commit have_custom_hook_abs_path &&
> + git config core.hooksDirectory "$PWD/.git/custom-hooks/" &&
> + test_commit have_custom_hook_abs_path_trailing_slash &&
> + printf "%s" "...." >.git/PRE-COMMIT-HOOK-WAS-CALLED.expect &&
> + test_cmp .git/PRE-COMMIT-HOOK-WAS-CALLED.expect .git/PRE-COMMIT-HOOK-WAS-CALLED
Indentation with spaces.
> +'
> +
> +test_done
> --
> 2.1.3
next prev parent reply other threads:[~2016-04-23 0:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-22 23:33 [PATCH] hooks: Add ability to specify where the hook directory is Ævar Arnfjörð Bjarmason
2016-04-23 0:13 ` SZEDER Gábor [this message]
2016-04-23 0:44 ` Ævar Arnfjörð Bjarmason
2016-04-24 21:18 ` [PATCH v2] " Ævar Arnfjörð Bjarmason
2016-04-25 14:19 ` Ævar Arnfjörð Bjarmason
2016-04-25 19:11 ` Johannes Sixt
2016-04-25 20:33 ` Junio C Hamano
2016-04-26 16:31 ` Ævar Arnfjörð Bjarmason
2016-04-26 19:16 ` Junio C Hamano
2016-04-26 19:19 ` Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1461370382-16524-1-git-send-email-szeder@ira.uka.de \
--to=szeder@ira.uka.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).