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

[PATCH] Locate git helpers with type -P, for when git --exec-path is multivalued

From
Dominique Quatravaux <domq@google.com>
Date
Mar 22, 2012, 09:06 UTC
Message-ID
<1332407219-7774-1-git-send-email-domq@google.com>

Under a setting of (eg) GIT_EXEC_PATH=/home/joe/bin:/usr/lib/git-core, constructs such as

  . "$(git --exec-path)"/git-sh-setup
do not work. The proper way is
  . "$(PATH="$(git --exec-path)" type -p git-sh-setup)"
---
 Documentation/git-mergetool--lib.txt |    3 ++-
 Documentation/git-parse-remote.txt   |    2 +-
 Documentation/git-sh-i18n.txt        |    2 +-
 Documentation/git-sh-setup.txt       |    2 +-
 contrib/diffall/git-diffall          |    4 ++--
 git-mergetool--lib.sh                |    2 +-
 6 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/Documentation/git-mergetool--lib.txt b/Documentation/git-mergetool--lib.txt
index f98a41b..c7188d3 100644
--- a/Documentation/git-mergetool--lib.txt
+++ b/Documentation/git-mergetool--lib.txt
@@ -8,7 +8,8 @@ git-mergetool--lib - Common git merge tool shell scriptlets
 SYNOPSIS
 --------
 [verse]
-'TOOL_MODE=(diff|merge) . "$(git --exec-path)/git-mergetool{litdd}lib"'
+'TOOL_MODE=(diff|merge) \
+  . "$(PATH="$(git --exec-path)" type -P git-mergetool{litdd}lib)"'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-parse-remote.txt b/Documentation/git-parse-remote.txt
index a45ea1e..c17d7b8 100644
--- a/Documentation/git-parse-remote.txt
+++ b/Documentation/git-parse-remote.txt
@@ -9,7 +9,7 @@ git-parse-remote - Routines to help parsing remote repository access parameters
 SYNOPSIS
 --------
 [verse]
-'. "$(git --exec-path)/git-parse-remote"'
+'. "$(PATH="$(git --exec-path)" type -P git-parse-remote)"'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-sh-i18n.txt b/Documentation/git-sh-i18n.txt
index 60cf49c..f74820c 100644
--- a/Documentation/git-sh-i18n.txt
+++ b/Documentation/git-sh-i18n.txt
@@ -8,7 +8,7 @@ git-sh-i18n - Git's i18n setup code for shell scripts
 SYNOPSIS
 --------
 [verse]
-'. "$(git --exec-path)/git-sh-i18n"'
+'. "$(PATH="$(git --exec-path)" type -P git-sh-i18n)"'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-sh-setup.txt b/Documentation/git-sh-setup.txt
index 5e5f1c8..44c6aa9 100644
--- a/Documentation/git-sh-setup.txt
+++ b/Documentation/git-sh-setup.txt
@@ -8,7 +8,7 @@ git-sh-setup - Common git shell script setup code
 SYNOPSIS
 --------
 [verse]
-'. "$(git --exec-path)/git-sh-setup"'
+'. "$(PATH="$(git --exec-path)" type -P git-sh-setup)"'
 
 DESCRIPTION
 -----------
diff --git a/contrib/diffall/git-diffall b/contrib/diffall/git-diffall
index 84f2b65..451ca98 100755
--- a/contrib/diffall/git-diffall
+++ b/contrib/diffall/git-diffall
@@ -22,10 +22,10 @@ USAGE='[--cached] [--copy-back] [-x|--extcmd=<command>] <commit>{0,2} [-- <path>
 '
 
 SUBDIRECTORY_OK=1
-. "$(git --exec-path)/git-sh-setup"
+PATH="$(PATH="$(git --exec-path)" type -P git-sh-setup)"
 
 TOOL_MODE=diff
-. "$(git --exec-path)/git-mergetool--lib"
+. "$(PATH="$(git --exec-path)" type -P git-mergetool--lib)"
 
 merge_tool="$(get_merge_tool)"
 if test -z "$merge_tool"
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index ed630b2..73d8510 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -52,7 +52,7 @@ setup_tool () {
 		tool="$1"
 		;;
 	esac
-	mergetools="$(git --exec-path)/mergetools"
+	mergetools="$(PATH="$(git --exec-path)" type -P mergetools)"
 
 	# Load the default definitions
 	. "$mergetools/defaults"
-- 
1.7.7.3
Next: Thomas Rast
Message 1 of 4 in “Locate git helpers with type -P, for when git --exec-path is multivalued”
  1. Locate git helpers with type -P, for when git --exec-path is multivaluedDominique Quatravaux, Mar 22, 2012
  2. Thomas RastMar 22, 2012
  3. Dominique QuatravauxMar 22, 2012
  4. Andreas SchwabMar 22, 2012

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.