mergetools: add winmerge as a builtin tool

Add a winmerge scriptlet with the commands described in [1] so that users can use winmerge without needing to perform any additional configuration. [1] http://thread.gmane.org/gmane.comp.version-control.git/268631 Helped-by: Philip Oakley <philipoakley@iee.org> Helped-by: Johannes Schindelin <johannes.schindelin@gmx.de> Helped-by: Sebastian Schuberth <sschuberth@gmail.com> Helped-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

David Aguilar committed May 20, 2015 at 02:07 UTC 3e4f2373b295e19dbc1a6bd0e743f65b500b7bda
1 file changed +36
mergetools/winmerge new
+36
@@ -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 +}