[PATCH v5 0/4] githooks.txt improvements + core.hooksDirectory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is hopefully the last version of this series. I've hopefully
addressed the comments that came up and fixed a couple of other minor
things.

Changes since v4:

 * Changed wording to config.txt's core.hooksPath documentation as
   suggested.

 * Ditto for githooks.txt, and I tried to make the whole "how we
   chdir()" bit less confusing.

 * Use more obvious test idioms, e.g. indent when using <<-\EOF, use a
   multi-line test_cmp file, and use "expect" and "actual" like other
   test files instead of needlessly verbose alternatives.

 * Fixed a grammar error in a commit message.

For convenience & ease of review a diff between the bits of v4 and v5
that I changed follows below.

Ævar Arnfjörð Bjarmason (4):
  githooks.txt: Improve the intro section
  githooks.txt: Amend dangerous advice about 'update' hook ACL
  githooks.txt: Minor improvements to the grammar & phrasing
  hooks: Add ability to specify where the hook directory is

 Documentation/config.txt     | 17 ++++++++++
 Documentation/git-init.txt   |  7 ++++-
 Documentation/githooks.txt   | 75 ++++++++++++++++++++++++++------------------
 cache.h                      |  1 +
 config.c                     |  3 ++
 environment.c                |  1 +
 run-command.c                |  5 ++-
 t/t1350-config-hooks-path.sh | 37 ++++++++++++++++++++++
 8 files changed, 114 insertions(+), 32 deletions(-)
 create mode 100755 t/t1350-config-hooks-path.sh

diff --git a/Documentation/config.txt b/Documentation/config.txt
index c007b12..9a74acd 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -625,16 +625,15 @@ core.hooksPath::
 	that directory, e.g. '/etc/git/hooks/pre-receive' instead of
 	in '$GIT_DIR/hooks/pre-receive'.
 +
-The path can either be absolute or relative. When specifying a
-relative path see the discussion in the "DESCRIPTION" section of
-linkgit:githooks[5] for what the relative relative path will be
-relative to.
-+
-This configuration is useful in cases where you'd like to
-e.g. centrally configure your Git hooks instead of configuring them on
-a per-repository basis, or as a more flexible and centralized
-alterantive to having an `init.templateDir` where you've changed the
-'hooks' directory.
+The path can be either absolute or relative. A relative path is
+taken as relative to the directory where the hooks are run (see
+the "DESCRIPTION" section of linkgit:githooks[5]).
++
+This configuration variable is useful in cases where you'd like to
+centrally configure your Git hooks instead of configuring them on a
+per-repository basis, or as a more flexible and centralized
+alterantive to having an `init.templateDir` where you've changed
+default hooks.
 
 core.editor::
 	Commands such as `commit` and `tag` that lets you edit
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index 97ae78d..6f562cd 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -21,20 +21,21 @@ By default the hooks directory is `$GIT_DIR/hooks`, but that can be
 changed via the `core.hooksPath` configuration variable (see
 linkgit:git-config[1]).
 
-When a hook is invoked, it is run at the root of the working tree in a
-non-bare repository, or in the $GIT_DIR in a bare
-repository. I.e. hooks don't need to worry about the user's current
-working directory.
+Hooks don't need to worry about the user's current working
+directory. Before Git invokes a hook it changes its working
+directory. The working directory will be the root of the working tree
+in a non-bare repository, or in the $GIT_DIR directory in a bare
+repository.
 
 Hooks can get their arguments via the environment, command-line
 arguments, and stdin. See the documentation for each hook below for
 details.
 
-When 'git init' is run it may, depending on its configuration, copy
-hooks to the new repository, see the the "TEMPLATE DIRECTORY" section
-in linkgit:git-init[1] for details. When the rest of this document
-refers to "default hooks" it's talking about the default template
-shipped with Git.
+'git init' may copy hooks to the new repository, depending on its
+configuration. See the "TEMPLATE DIRECTORY" section in
+linkgit:git-init[1] for details. When the rest of this document refers
+to "default hooks" it's talking about the default template shipped
+with Git.
 
 The currently supported hooks are described below.
 
diff --git a/t/t1350-config-hooks-path.sh b/t/t1350-config-hooks-path.sh
index f2f0aa9..6e4586a 100755
--- a/t/t1350-config-hooks-path.sh
+++ b/t/t1350-config-hooks-path.sh
@@ -7,10 +7,10 @@ test_description='Test the core.hooksPath configuration variable'
 test_expect_success 'set up a pre-commit hook in core.hooksPath' '
 	mkdir -p .git/custom-hooks .git/hooks &&
 	write_script .git/custom-hooks/pre-commit <<-\EOF &&
-printf "%s" "CUST" >>.git/PRE-COMMIT-HOOK-WAS-CALLED
+	echo CUSTOM >>actual
 EOF
 	write_script .git/hooks/pre-commit <<-\EOF
-printf "%s" "NORM" >>.git/PRE-COMMIT-HOOK-WAS-CALLED
+	echo NORMAL >>actual
 EOF
 '
 
@@ -24,8 +24,14 @@ test_expect_success 'Check that various forms of specifying core.hooksPath work'
 	test_commit have_custom_hook_abs_path &&
 	git config core.hooksPath "$PWD/.git/custom-hooks/" &&
 	test_commit have_custom_hook_abs_path_trailing_slash &&
-	printf "%s" "NORMCUSTCUSTCUSTCUST" >.git/PRE-COMMIT-HOOK-WAS-CALLED.expect &&
-	test_cmp .git/PRE-COMMIT-HOOK-WAS-CALLED.expect .git/PRE-COMMIT-HOOK-WAS-CALLED
+	cat >expect <<-\EOF &&
+	NORMAL
+	CUSTOM
+	CUSTOM
+	CUSTOM
+	CUSTOM
+EOF
+	test_cmp expect actual
 '
 
 test_done


-- 
2.1.3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]