mergetools/meld: Use '--output' when available
authorDavid Aguilar <davvid@gmail.com>
Fri, 19 Aug 2011 09:14:45 +0000 (02:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Aug 2011 17:52:16 +0000 (10:52 -0700)
meld 1.5.0 and newer allow the output file to be specified
when merging multiple files.  Check whether the meld command
supports '--output' and use it when available.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
mergetools/meld

index 73d70ae28ad1e6a5b38e051442e08c26c074bb22..eaa115ccb7a1154715c1d9dd9b7d4d360234aa01 100644 (file)
@@ -3,7 +3,30 @@ diff_cmd () {
 }
 
 merge_cmd () {
+       if test -z "${meld_has_output_option:+set}"
+       then
+               check_meld_for_output_version
+       fi
        touch "$BACKUP"
-       "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
+       if test "$meld_has_output_option" = true
+       then
+               "$merge_tool_path" --output "$MERGED" \
+                       "$LOCAL" "$BASE" "$REMOTE"
+       else
+               "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
+       fi
        check_unchanged
 }
+
+# Check whether 'meld --output <file>' is supported
+check_meld_for_output_version () {
+       meld_path="$(git config mergetool.meld.path)"
+       meld_path="${meld_path:-meld}"
+
+       if "$meld_path" --output /dev/null --help >/dev/null 2>&1
+       then
+               meld_has_output_option=true
+       else
+               meld_has_output_option=false
+       fi
+}