Skip to content

Commit

Permalink
Merge branch 'da/mergetool-winmerge'
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
gitster committed Jun 1, 2015
2 parents 1fd63ca + 3e4f237 commit 324a9f4
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
3 changes: 3 additions & 0 deletions git-mergetool--lib.sh
Expand Up @@ -2,6 +2,9 @@

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

IFS='
'

mode_ok () {
if diff_mode
then
Expand Down
2 changes: 0 additions & 2 deletions git-mergetool.sh
Expand Up @@ -451,8 +451,6 @@ fi
printf "Merging:\n"
printf "%s\n" "$files"

IFS='
'
rc=0
for i in $files
do
Expand Down
36 changes: 36 additions & 0 deletions 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
}

0 comments on commit 324a9f4

Please sign in to comment.