diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-06-01 12:45:14 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-01 12:45:14 -0700 |
commit | 324a9f41cbf96ad994efc3b20be239116eba0dae (patch) | |
tree | 496fc12b58b69d8795315049e89a6dbb0737471a | |
parent | Merge branch 'mc/commit-doc-grammofix' (diff) | |
parent | mergetools: add winmerge as a builtin tool (diff) | |
download | tgif-324a9f41cbf96ad994efc3b20be239116eba0dae.tar.xz |
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
-rw-r--r-- | git-mergetool--lib.sh | 3 | ||||
-rwxr-xr-x | git-mergetool.sh | 2 | ||||
-rw-r--r-- | mergetools/winmerge | 36 |
3 files changed, 39 insertions, 2 deletions
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index fe61e89f31..14b039de65 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -2,6 +2,9 @@ : ${MERGE_TOOLS_DIR=$(git --exec-path)/mergetools} +IFS=' +' + mode_ok () { if diff_mode then diff --git a/git-mergetool.sh b/git-mergetool.sh index d20581c15c..9f77e3a8bb 100755 --- a/git-mergetool.sh +++ b/git-mergetool.sh @@ -451,8 +451,6 @@ fi printf "Merging:\n" printf "%s\n" "$files" -IFS=' -' rc=0 for i in $files do diff --git a/mergetools/winmerge b/mergetools/winmerge new file mode 100644 index 0000000000..74a66d4e8d --- /dev/null +++ b/mergetools/winmerge @@ -0,0 +1,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 +} |