Cygwin Git: wrappers for diffmerge, winmerge, and p4merge
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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" | |
p4mergewinpath="C:/Program Files/Perforce/p4merge.exe" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Use p4merge as mergetool for git in cygwin. | |
# git config --global difftool.p4merge.cmd "p4merge-diff.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\"" | |
# git config --global mergetool.p4merge.trustExitCode false | |
# git difftool -t p4merge branch1..branch2 | |
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf | |
# Reference: http://p4merge.org/docs/manual/CommandLine.html | |
library=githelperfunctions.sh | |
#[ -f $library ] && . $library | |
. $library | |
echo Launching p4merge.exe - p4merge-diff.sh: | |
set_path_vars "$1" "$2" "$3" "$4" | |
#"$p4mergewinpath" /dl "LOCAL.$caption" /dr "TO_VERSION.$caption" "$localwinpath" "$remotewinpath" | |
"$p4mergewinpath" "$localwinpath" "$remotewinpath" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Use p4merge as mergetool for git in cygwin. | |
# git config --global mergetool.p4merge.cmd "p4merge-merge.sh \"\$LOCAL\" \"\$REMOTE\" \"\$BASE\" \"\$MERGED\"" | |
# git config --global mergetool.p4merge.trustExitCode false | |
# git mergetool -t diffmerge | |
# Reference: http://www.tldp.org/LDP/abs/abs-guide.pdf | |
# Reference: http://p4merge.org/docs/manual/CommandLine.html | |
library=githelperfunctions.sh | |
#[ -f $library ] && . $library | |
. $library | |
echo Launching p4merge.exe - p4merge-merge.sh: | |
set_path_vars "$1" "$2" "$3" "$4" | |
# -- use p4mergeU conflictFile | |
"$p4mergewinpath" "$mergedwinpath" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi! I got your scripts to use p4merge with git in Cygwin.
I noticed p4merge pops up an error message when merging conflicts. I found the problem.
At line 21 of winmerge-merge.sh the line
But, p4merge requires 4 parameters to merge files. So instead it should be:
That fixed it for me.
Regards,
Stephane