public
Last active

Cygwin Git: wrappers for diffmerge and winmerge

  • Download Gist
diffmerge-diff.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/bin/sh
# Use SourceGear DiffMerge as mergetool for git in cygwin.
# git config --global mergetool.diffmerge.cmd "diffmergetool.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\""
# git config --global mergetool.diffmerge.trustExitCode false
# git difftool -t diffmerge branch1..branch2
 
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf
 
library=githelperfunctions.sh
 
#[ -f $library ] && . $library
. $library
 
echo Launching DiffMerge.exe - diffmerge-diff.sh:
 
set_path_vars "$1" "$2" "$3" "$4"
 
echo "$diffmergewinpath" -t1=FROM_VERSION -t2=TO_VERSION --caption=$caption $localwinpath $remotewinpath
"$diffmergewinpath" -t1=FROM_VERSION -t2=TO_VERSION --caption="$caption" "$localwinpath" "$remotewinpath"
diffmerge-merge.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/bin/sh
# Use SourceGear DiffMerge as mergetool for git in cygwin.
# git config --global mergetool.diffmerge.cmd "diffmergetool.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\""
# git config --global mergetool.diffmerge.trustExitCode false
# git mergetool -t diffmerge
 
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf
 
library=githelperfunctions.sh
 
#[ -f $library ] && . $library
. $library
 
echo Launching DiffMerge.exe - diffmerge-merge.sh:
 
set_path_vars "$1" "$2" "$3" "$4"
 
"$diffmergewinpath" --merge -t1=FROM_VERSION -t2=MERGED -t3=TO_VERSION --result="$mergedwinpath" --caption="$caption" "$localwinpath" "$basewinpath" "$remotewinpath"
 
unix2dos "$merged"
githelperfunctions.sh
Shell
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 37 38 39 40 41 42 43 44
# Helper functions
 
 
convert_path () {
file=$1
 
if [ "$file" == '/dev/null' ] || [ ! -e "$file" ]
then
file="/tmp/nulla"
`echo "">$file`
fi
echo `cygpath -w -a "$file"`
}
 
 
set_path_vars () {
local=$1
remote=$2
base=$3
merged=$4
 
echo ========= Cygwin paths =======
echo "LOCAL : $local"
echo "REMOTE : $remote"
echo "BASE : $base"
echo "MERGED : $merged"
 
localwinpath=$(convert_path "$local")
remotewinpath=$(convert_path "$remote")
basewinpath=$(convert_path "$base")
mergedwinpath=$(convert_path "$merged")
 
echo ========= Win paths =======
echo "LOCAL : $localwinpath"
echo "REMOTE : $remotewinpath"
echo "BASE : $basewinpath"
echo "MERGED : $mergedwinpath"
 
caption=`basename "$merged"`
diffmergewinpath="C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe"
winmergewinpath="C:/Program Files/WinMerge/WinMergeU.exe"
# diffmergewinpath=`cygpath -u C:/Program Files/SourceGear/DiffMerge/DiffMerge.exe`
# winmergewinpath=`cygpath -u \"C:\Program Files\WinMerge\WinMergeU.exe\"`
}
winmerge-diff.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/bin/sh
# Use winmerge as mergetool for git in cygwin.
# git config --global difftool.winmerge.cmd "winmerge-diff.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\""
# git config --global mergetool.winmerge.trustExitCode false
# git difftool -t winmerge branch1..branch2
 
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf
# Reference: http://winmerge.org/docs/manual/CommandLine.html
 
 
library=githelperfunctions.sh
 
#[ -f $library ] && . $library
. $library
 
echo Launching winmerge.exe - winmerge-diff.sh:
 
set_path_vars "$1" "$2" "$3" "$4"
 
"$winmergewinpath" /dl "LOCAL.$caption" /dr "TO_VERSION.$caption" "$localwinpath" "$remotewinpath"
winmerge-merge.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/bin/sh
# Use winmerge as mergetool for git in cygwin.
# git config --global mergetool.winmerge.cmd "winmerge-merge.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\""
# git config --global mergetool.winmerge.trustExitCode false
# git mergetool -t diffmerge
 
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf
# Reference: http://winmerge.org/docs/manual/CommandLine.html
 
library=githelperfunctions.sh
 
#[ -f $library ] && . $library
. $library
 
echo Launching winmerge.exe - winmerge-merge.sh:
 
 
set_path_vars "$1" "$2" "$3" "$4"
 
# -- use WinMergeU conflictFile
"$winmergewinpath" "$mergedwinpath"

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.