about summary refs log tree commit diff
path: root/third_party/git/mergetools/meld
diff options
context:
space:
mode:
authorVincent Ambo <Vincent Ambo>2020-01-11T23·36+0000
committerVincent Ambo <Vincent Ambo>2020-01-11T23·40+0000
commit7ef0d62730840ded097b524104cc0a0904591a63 (patch)
treea670f96103667aeca4789a95d94ca0dff550c4ce /third_party/git/mergetools/meld
parent6a2a3007077818e24a3d56fc492ada9206a10cf0 (diff)
parent1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (diff)
merge(third_party/git): Merge squashed git subtree at v2.23.0 r/373
Merge commit '1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5' as 'third_party/git'
Diffstat (limited to 'third_party/git/mergetools/meld')
-rw-r--r--third_party/git/mergetools/meld36
1 files changed, 36 insertions, 0 deletions
diff --git a/third_party/git/mergetools/meld b/third_party/git/mergetools/meld
new file mode 100644
index 000000000000..7a08470f8836
--- /dev/null
+++ b/third_party/git/mergetools/meld
@@ -0,0 +1,36 @@
+diff_cmd () {
+	"$merge_tool_path" "$LOCAL" "$REMOTE"
+}
+
+merge_cmd () {
+	if test -z "${meld_has_output_option:+set}"
+	then
+		check_meld_for_output_version
+	fi
+
+	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 whether we should use 'meld --output <file>'
+check_meld_for_output_version () {
+	meld_path="$(git config mergetool.meld.path)"
+	meld_path="${meld_path:-meld}"
+
+	if meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
+	then
+		: use configured value
+	elif "$meld_path" --help 2>&1 |
+		grep -e '--output=' -e '\[OPTION\.\.\.\]' >/dev/null
+	then
+		: old ones mention --output and new ones just say OPTION...
+		meld_has_output_option=true
+	else
+		meld_has_output_option=false
+	fi
+}