From f9ad901fd31991837c9648bbee8ac18b39aa0891 Mon Sep 17 00:00:00 2001 From: David Aguilar Date: Wed, 25 May 2011 23:21:01 -0700 Subject: [PATCH] git-mergetool--lib: Make vimdiff retain the current directory MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reported-by: Frédéric Heitzmann Signed-off-by: Junio C Hamano --- git-mergetool--lib.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index fb3f52ba2..f5a100a56 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -86,6 +86,11 @@ 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:-.} + export GIT_PREFIX + merge_tool_path="$(get_merge_tool_path "$1")" || exit base_present="$2" status=0 @@ -188,6 +193,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 +205,7 @@ run_merge_tool () { check_unchanged else "$merge_tool_path" -R -f -d -c "wincmd l" \ + -c 'cd $GIT_PREFIX' \ "$LOCAL" "$REMOTE" fi ;; -- 2.30.2