Skip to content

Commit f9ad901

Browse files
davvidgitster
authored andcommitted
git-mergetool--lib: Make vimdiff retain the current directory
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 26b0525 commit f9ad901

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

git-mergetool--lib.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ get_merge_tool_cmd () {
8686
}
8787

8888
run_merge_tool () {
89+
# If GIT_PREFIX is empty then we cannot use it in tools
90+
# that expect to be able to chdir() to its value.
91+
GIT_PREFIX=${GIT_PREFIX:-.}
92+
export GIT_PREFIX
93+
8994
merge_tool_path="$(get_merge_tool_path "$1")" || exit
9095
base_present="$2"
9196
status=0
@@ -188,6 +193,7 @@ run_merge_tool () {
188193
check_unchanged
189194
else
190195
"$merge_tool_path" -R -f -d -c "wincmd l" \
196+
-c 'cd $GIT_PREFIX' \
191197
"$LOCAL" "$REMOTE"
192198
fi
193199
;;
@@ -199,6 +205,7 @@ run_merge_tool () {
199205
check_unchanged
200206
else
201207
"$merge_tool_path" -R -f -d -c "wincmd l" \
208+
-c 'cd $GIT_PREFIX' \
202209
"$LOCAL" "$REMOTE"
203210
fi
204211
;;

0 commit comments

Comments
 (0)