mirror of
https://github.com/git/git.git
synced 2026-03-13 18:33:25 +01:00
mergetool: added support for kdiff3 on windows
kdiff3's homepage is http://kdiff3.sourceforge.net/. kdiff3 is automatically added to the available mergetools if its path is found in the Windows Registry. The path is taken from the registry. Be sure to set git config core.autocrlf true because kdiff3 seems to follow Windows crlf convention.
This commit is contained in:
committed by
Dmitry Kakurin
parent
fefe8db817
commit
3318ad905e
@@ -14,6 +14,7 @@ SUBDIRECTORY_OK=Yes
|
||||
require_work_tree
|
||||
|
||||
KDIFF3=kdiff3
|
||||
KDIFF3SEPARATOR=--
|
||||
|
||||
# Returns true if the mode reflects a symlink
|
||||
is_symlink () {
|
||||
@@ -194,10 +195,10 @@ merge_file () {
|
||||
kdiff3)
|
||||
if base_present ; then
|
||||
("$KDIFF3" --auto --L1 "$path (Base)" -L2 "$path (Local)" --L3 "$path (Remote)" \
|
||||
-o "$path" -- "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1)
|
||||
-o "$path" $KDIFF3SEPERATOR "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1)
|
||||
else
|
||||
("$KDIFF3" --auto -L1 "$path (Local)" --L2 "$path (Remote)" \
|
||||
-o "$path" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
|
||||
-o "$path" $KDIFF3SEPERATOR "$LOCAL" "$REMOTE" > /dev/null 2>&1)
|
||||
fi
|
||||
status=$?
|
||||
remove_backup
|
||||
@@ -321,6 +322,11 @@ if test -z "$merge_tool" ; then
|
||||
merge_tool_candidates="kdiff3 $merge_tool_candidates"
|
||||
fi
|
||||
fi
|
||||
regentry="$(REG QUERY 'HKEY_LOCAL_MACHINE\SOFTWARE\KDiff3\diff-ext' 2>/dev/null)" && {
|
||||
KDIFF3=$(echo "$regentry" | grep diffcommand | cut -f 3)
|
||||
KDIFF3SEPARATOR=
|
||||
merge_tool_candidates="$merge_tool_candidates kdiff3"
|
||||
}
|
||||
if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then
|
||||
merge_tool_candidates="$merge_tool_candidates emerge"
|
||||
fi
|
||||
@@ -332,10 +338,12 @@ if test -z "$merge_tool" ; then
|
||||
for i in $merge_tool_candidates; do
|
||||
if test $i = emerge ; then
|
||||
cmd=emacs
|
||||
elif test $i = kdiff3 ; then
|
||||
cmd="$KDIFF3"
|
||||
else
|
||||
cmd=$i
|
||||
fi
|
||||
if type $cmd > /dev/null 2>&1; then
|
||||
if type "$cmd" > /dev/null 2>&1; then
|
||||
merge_tool=$i
|
||||
break
|
||||
fi
|
||||
@@ -347,7 +355,13 @@ if test -z "$merge_tool" ; then
|
||||
fi
|
||||
|
||||
case "$merge_tool" in
|
||||
kdiff3|tkdiff|meld|xxdiff|vimdiff|gvimdiff|opendiff)
|
||||
kdiff3)
|
||||
if ! type "$KDIFF3" > /dev/null 2>&1; then
|
||||
echo "The merge tool $merge_tool is not available"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
tkdiff|meld|xxdiff|vimdiff|gvimdiff|opendiff)
|
||||
if ! type "$merge_tool" > /dev/null 2>&1; then
|
||||
echo "The merge tool $merge_tool is not available"
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user