git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 0/1] git-gui: respect core.hooksPath, falling back to .git/hooks

From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 8, 2019, 11:33 UTC
Message-ID
<pull.361.v4.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.361.v3.git.gitgitgadget@gmail.com>
This is yet another patch from Git for Windows.
Changes since v3:
 * Adjusted the commit message to reflect that this is no longer only about
   the hooks directory.
 * Added a code comment to indicate how the list of keys was determined that
   are used for the gitdir priming.
 * The gitdir cache is now re-primed upon F5.
Changes since v2:
 * The paths returned by git rev-parse --git-path are now cached, and the
   cache is primed with the most common paths.
Changes since v1:
 * Rather than a fine-grained override of gitdir just for the hooks path, we
   now spawn git rev-parse --git-path [...] every time gitdir is called with
   arguments. This makes the code safer, although at the cost of potentially
   many spawned processes.
Johannes Schindelin (1):
  Make gitdir work with worktrees, respect core.hooksPath, etc
 git-gui.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 58 insertions(+), 4 deletions(-)
base-commit: 60c60b627e81bf84e1cb01729d2ae882178f079d
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-361%2Fdscho%2Fgit-gui-hooks-path-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-361/dscho/git-gui-hooks-path-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/361
Range-diff vs v3:
 1:  65c2fa33e1 ! 1:  2f55d6fb2a Fix gitdir e.g. to respect core.hooksPath
     @@ -1,17 +1,21 @@
      Author: Johannes Schindelin <Johannes.Schindelin@gmx.de>
      
     -    Fix gitdir e.g. to respect core.hooksPath
     +    Make gitdir work with worktrees, respect core.hooksPath, etc
      
     -    Since v2.9.0, Git knows about the config variable core.hookspath
     -    that allows overriding the path to the directory containing the
     -    Git hooks.
     +    Since v2.9.0, Git knows about the config variable core.hookspath that
     +    allows overriding the path to the directory containing the Git hooks.
      
     -    Since v2.10.0, the `--git-path` option respects that config
     -    variable, too, so we may just as well use that command.
     +    Since v2.10.0, the `--git-path` option respects that config variable,
     +    too, so we may just as well use that command.
     +
     +    Other paths inside `.git` are equally subject to differ from
     +    `<gitdir>/<path>`, i.e. inside worktrees, where _some_ paths live in the
     +    "gitdir" and some live in the "commondir" (i.e. the "gitdir" of the main
     +    worktree).
      
          For Git versions older than v2.5.0 (which was the first version to
     -    support the `--git-path` option for the `rev-parse` command), we
     -    simply fall back to the previous code.
     +    support the `--git-path` option for the `rev-parse` command), we simply
     +    fall back to the previous code.
      
          An original patch handled only the hooksPath setting, however, during
          the code submission it was deemed better to fix all call to the `gitdir`
     @@ -19,7 +23,9 @@
      
          To avoid spawning a gazillion `git rev-parse --git-path` instances, we
          cache the returned paths, priming the cache upon startup in a single
     -    `git rev-parse invocation` with the known entries.
     +    `git rev-parse invocation` with some paths (that have been
     +    determined via a typical startup and via grepping the source code for
     +    calls to the `gitdir` function).
      
          This fixes https://github.com/git-for-windows/git/issues/1755
      
     @@ -48,6 +54,8 @@
      +
      +	# `--git-path` is only supported since Git v2.5.0
      +	if {[package vcompare $::_git_version 2.5.0] >= 0} {
     ++		# This list was generated from a typical startup as well as from
     ++		# grepping through Git GUI's source code.
      +		set gitdir_keys [list \
      +			CHERRY_PICK_HEAD FETCH_HEAD GITGUI_BCK GITGUI_EDITMSG \
      +			GITGUI_MSG HEAD hooks hooks/prepare-commit-msg \
     @@ -106,3 +114,21 @@
       		set _prefix [git rev-parse --show-prefix]
       	} err]} {
       	load_config 1
     +@@
     + 	global HEAD PARENT MERGE_HEAD commit_type
     + 	global ui_index ui_workdir ui_comm
     + 	global rescan_active file_states
     +-	global repo_config
     ++	global repo_config _gitdir_cache
     + 
     + 	if {$rescan_active > 0 || ![lock_index read]} return
     + 
     ++	# Only re-prime gitdir cache on a full rescan
     ++	if {$after ne "ui_ready"} {
     ++		array unset _gitdir_cache
     ++		prime_gitdir_cache
     ++	}
     ++
     + 	repository_state newType newHEAD newMERGE_HEAD
     + 	if {[string match amend* $commit_type]
     + 		&& $newType eq {normal}
-- 
gitgitgadget
Previous: Johannes SchindelinNext: Johannes Schindelin via GitGitGadget
Message 17 of 24 in “git-gui: respect core.hooksPath, falling back to .git/hooks”
  1. 0/1 git-gui: respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Sep 26, 2019
  2. 1/1 respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Sep 26, 2019
  3. Pratyush YadavSep 26, 2019
  4. Bert WesargSep 27, 2019
  5. Pratyush YadavSep 27, 2019
  6. Johannes SchindelinSep 30, 2019
  7. Pratyush YadavOct 1, 2019
  8. Johannes SchindelinOct 1, 2019
  9. Pratyush YadavOct 4, 2019
  10. Johannes SchindelinOct 4, 2019
  11. 0/1 git-gui: respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Sep 30, 2019
  12. 1/1 respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Sep 30, 2019
  13. 0/1 git-gui: respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Oct 4, 2019
  14. 1/1 Fix gitdir e.g. to respect core.hooksPathJohannes Schindelin via GitGitGadget, Oct 4, 2019
  15. Pratyush YadavOct 8, 2019
  16. Johannes SchindelinOct 8, 2019
  17. 0/1 git-gui: respect core.hooksPath, falling back to .git/hooksJohannes Schindelin via GitGitGadget, Oct 8, 2019
  18. 1/1 Make gitdir work with worktrees, respect core.hooksPath, etcJohannes Schindelin via GitGitGadget, Oct 8, 2019
  19. Pratyush YadavOct 11, 2019
  20. Johannes SchindelinOct 12, 2019
  21. Pratyush YadavOct 13, 2019
  22. Johannes SchindelinOct 13, 2019
  23. Pratyush YadavOct 17, 2019
  24. Johannes SchindelinOct 14, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.