Qt-only builds of kdiff3 (no KDE) do not support a bare '--' on the command
line. It will fail silently and mysteriously.
Signed-off-by: Patrick Higgins <patrick.higgins@cexp.com>
---
Documentation/config.txt | 6 ++++++
git-mergetool.sh | 11 +++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 5331b45..da40c2e 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -884,6 +884,12 @@ mergetool.<tool>.trustExitCode::
if the file has been updated, otherwise the user is prompted to
indicate the success of the merge.
+mergetool.kdiff3.doubledash::
+ A boolean to indicate whether or not your kdiff3 supports a '--'
+ on the command line to separate options from filenames. If you
+ built it without KDE, it probably doesn't have this support and
+ you should set this to false. Defaults to true.
+
mergetool.keepBackup::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
diff --git a/git-mergetool.sh b/git-mergetool.sh
index fcdec4a..57cbac0 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -181,12 +181,19 @@ merge_file () {
case "$merge_tool" in
kdiff3)
+ doubledash=`git config --bool mergetool.kdiff3.doubledash`
+ if test "$doubledash" = "false"; then
+ double_dash=""
+ else
+ double_dash="--"
+ fi
+
if base_present ; then
("$merge_tool_path" --auto --L1 "$MERGED (Base)" --L2 "$MERGED (Local)" --L3 "$MERGED (Remote)" \
- -o "$MERGED" -- "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1)
+ -o "$MERGED" $double_dash "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1)
else
("$merge_tool_path" --auto --L1 "$MERGED (Local)" --L2 "$MERGED (Remote)" \
- -o "$MERGED" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
+ -o "$MERGED" $double_dash "$LOCAL" "$REMOTE" > /dev/null 2>&1)
fi
status=$?
;;
-- ...