summaryrefslogtreecommitdiff
path: root/mergetools/winmerge
blob: 74a66d4e8dae9529d14908aeb99e09d58f13724e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
diff_cmd () {
	"$merge_tool_path" -u -e "$LOCAL" "$REMOTE"
	return 0
}

merge_cmd () {
	# mergetool.winmerge.trustExitCode is implicitly false.
	# touch $BACKUP so that we can check_unchanged.
	touch "$BACKUP"
	"$merge_tool_path" -u -e -dl Local -dr Remote \
		"$LOCAL" "$REMOTE" "$MERGED"
	check_unchanged
}

translate_merge_tool_path() {
	# Use WinMergeU.exe if it exists in $PATH
	if type -p WinMergeU.exe >/dev/null 2>&1
	then
		printf WinMergeU.exe
		return
	fi

	# Look for WinMergeU.exe in the typical locations
	winmerge_exe="WinMerge/WinMergeU.exe"
	for directory in $(env | grep -Ei '^PROGRAM(FILES(\(X86\))?|W6432)=' |
		cut -d '=' -f 2- | sort -u)
	do
		if test -n "$directory" && test -x "$directory/$winmerge_exe"
		then
			printf '%s' "$directory/$winmerge_exe"
			return
		fi
	done

	printf WinMergeU.exe
}