Browse Source

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
maint
Junio C Hamano 10 years ago
parent
commit
324a9f41cb
  1. 3
      git-mergetool--lib.sh
  2. 2
      git-mergetool.sh
  3. 36
      mergetools/winmerge

3
git-mergetool--lib.sh

@ -2,6 +2,9 @@ @@ -2,6 +2,9 @@

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

IFS='
'

mode_ok () {
if diff_mode
then

2
git-mergetool.sh

@ -451,8 +451,6 @@ fi @@ -451,8 +451,6 @@ fi
printf "Merging:\n"
printf "%s\n" "$files"

IFS='
'
rc=0
for i in $files
do

36
mergetools/winmerge

@ -0,0 +1,36 @@ @@ -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
}
Loading…
Cancel
Save