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

[PATCH] git-mergetool--lib: Make vimdiff retain the current directory

From
David Aguilar <davvid@gmail.com>
Date
May 26, 2011, 05:29 UTC
Message-ID
<1306387776-14593-1-git-send-email-davvid@gmail.com>
In-Reply-To
<1306381034-44190-3-git-send-email-davvid@gmail.com>

When using difftool with vimdiff it can be unexpected that the current directory changes to the root of the project. Tell vim to chdir to the value of $GIT_PREFIX to fix this.

Care is taken to quote the variable so that vim expands it. This avoids problems when directory names contain spaces.

Signed-off-by: David Aguilar <davvid@gmail.com>
Reported-by: Frédéric Heitzmann <frederic.heitzmann@gmail.com>
---
Replacement for the last patch: uses ${GIT_PREFIX:-.}
 git-mergetool--lib.sh |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index 4db9212..43a9a28 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -86,6 +86,10 @@ get_merge_tool_cmd () {
 }
 
 run_merge_tool () {
+	# If GIT_PREFIX is empty then we cannot use it in tools
+	# that expect to be able to chdir() to its value.
+	: GIT_PREFIX=${GIT_PREFIX:-.}
+
 	merge_tool_path="$(get_merge_tool_path "$1")" || exit
 	base_present="$2"
 	status=0
@@ -188,6 +192,7 @@ run_merge_tool () {
 			check_unchanged
 		else
 			"$merge_tool_path" -R -f -d -c "wincmd l" \
+				-c 'cd $GIT_PREFIX' \
 				"$LOCAL" "$REMOTE"
 		fi
 		;;
@@ -199,6 +204,7 @@ run_merge_tool () {
 			check_unchanged
 		else
 			"$merge_tool_path" -R -f -d -c "wincmd l" \
+				-c 'cd $GIT_PREFIX' \
 				"$LOCAL" "$REMOTE"
 		fi
 		;;
-- 
1.7.5.2.660.g9f46c
Previous: David AguilarNext: David Aguilar
Message 5 of 8 in “setup: Provide GIT_PREFIX to built-ins”
  1. 1/3 setup: Provide GIT_PREFIX to built-insDavid Aguilar, May 26, 2011
  2. 2/3 git: Remove handling for GIT_PREFIXDavid Aguilar, May 26, 2011
  3. 3/3 git-mergetool--lib: Make vimdiff retain the current directoryDavid Aguilar, May 26, 2011
  4. David AguilarMay 26, 2011
  5. git-mergetool--lib: Make vimdiff retain the current directoryDavid Aguilar, May 26, 2011
  6. 3/3 git-mergetool--lib: Make vimdiff retain the current directoryDavid Aguilar, May 26, 2011
  7. Junio C HamanoMay 26, 2011
  8. David AguilarMay 26, 2011

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.