Skip to content

Commit 324a9f4

Browse files
committed
Merge branch 'da/mergetool-winmerge'
"git mergetool" learned to drive WinMerge as a backend. * da/mergetool-winmerge: mergetools: add winmerge as a builtin tool mergetool--lib: set IFS for difftool and mergetool
2 parents 1fd63ca + 3e4f237 commit 324a9f4

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

git-mergetool--lib.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
: ${MERGE_TOOLS_DIR=$(git --exec-path)/mergetools}
44

5+
IFS='
6+
'
7+
58
mode_ok () {
69
if diff_mode
710
then

git-mergetool.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,6 @@ fi
451451
printf "Merging:\n"
452452
printf "%s\n" "$files"
453453

454-
IFS='
455-
'
456454
rc=0
457455
for i in $files
458456
do

mergetools/winmerge

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
diff_cmd () {
2+
"$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
3+
return 0
4+
}
5+
6+
merge_cmd () {
7+
# mergetool.winmerge.trustExitCode is implicitly false.
8+
# touch $BACKUP so that we can check_unchanged.
9+
touch "$BACKUP"
10+
"$merge_tool_path" -u -e -dl Local -dr Remote \
11+
"$LOCAL" "$REMOTE" "$MERGED"
12+
check_unchanged
13+
}
14+
15+
translate_merge_tool_path() {
16+
# Use WinMergeU.exe if it exists in $PATH
17+
if type -p WinMergeU.exe >/dev/null 2>&1
18+
then
19+
printf WinMergeU.exe
20+
return
21+
fi
22+
23+
# Look for WinMergeU.exe in the typical locations
24+
winmerge_exe="WinMerge/WinMergeU.exe"
25+
for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
26+
cut -d '=' -f 2- | sort -u)
27+
do
28+
if test -n "$directory" && test -x "$directory/$winmerge_exe"
29+
then
30+
printf '%s' "$directory/$winmerge_exe"
31+
return
32+
fi
33+
done
34+
35+
printf WinMergeU.exe
36+
}

0 commit comments

Comments
 (0)