2020-01-12 00:36:56 +01:00
|
|
|
diff_cmd () {
|
|
|
|
"$merge_tool_path" "$LOCAL" "$REMOTE"
|
|
|
|
}
|
|
|
|
|
|
|
|
merge_cmd () {
|
2020-11-21 19:20:35 +01:00
|
|
|
check_meld_for_features
|
|
|
|
|
|
|
|
option_auto_merge=
|
|
|
|
if test "$meld_use_auto_merge_option" = true
|
2020-01-12 00:36:56 +01:00
|
|
|
then
|
2020-11-21 19:20:35 +01:00
|
|
|
option_auto_merge="--auto-merge"
|
2020-01-12 00:36:56 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$meld_has_output_option" = true
|
|
|
|
then
|
2020-11-21 19:20:35 +01:00
|
|
|
"$merge_tool_path" $option_auto_merge --output="$MERGED" \
|
2020-01-12 00:36:56 +01:00
|
|
|
"$LOCAL" "$BASE" "$REMOTE"
|
|
|
|
else
|
2020-11-21 19:20:35 +01:00
|
|
|
"$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
|
2020-01-12 00:36:56 +01:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2020-11-21 19:20:35 +01:00
|
|
|
# Get meld help message
|
|
|
|
init_meld_help_msg () {
|
|
|
|
if test -z "$meld_help_msg"
|
|
|
|
then
|
|
|
|
meld_path="$(git config mergetool.meld.path || echo meld)"
|
|
|
|
meld_help_msg=$("$meld_path" --help 2>&1)
|
|
|
|
fi
|
|
|
|
}
|
2020-01-12 00:36:56 +01:00
|
|
|
|
2020-11-21 19:20:35 +01:00
|
|
|
# Check the features and set flags
|
|
|
|
check_meld_for_features () {
|
|
|
|
# Check whether we should use 'meld --output <file>'
|
|
|
|
if test -z "$meld_has_output_option"
|
2020-01-12 00:36:56 +01:00
|
|
|
then
|
2020-11-21 19:20:35 +01:00
|
|
|
meld_has_output_option=$(git config --bool mergetool.meld.hasOutput)
|
|
|
|
case "$meld_has_output_option" in
|
|
|
|
true | false)
|
|
|
|
: use configured value
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
: empty or invalid configured value, detecting "--output" automatically
|
|
|
|
init_meld_help_msg
|
|
|
|
|
|
|
|
case "$meld_help_msg" in
|
|
|
|
*"--output="* | *'[OPTION...]'*)
|
|
|
|
# All version that has [OPTION...] supports --output
|
|
|
|
meld_has_output_option=true
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
meld_has_output_option=false
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
# Check whether we should use 'meld --auto-merge ...'
|
|
|
|
if test -z "$meld_use_auto_merge_option"
|
2020-01-12 00:36:56 +01:00
|
|
|
then
|
2020-11-21 19:20:35 +01:00
|
|
|
meld_use_auto_merge_option=$(
|
|
|
|
git config --bool-or-str mergetool.meld.useAutoMerge
|
|
|
|
)
|
|
|
|
case "$meld_use_auto_merge_option" in
|
|
|
|
true | false)
|
|
|
|
: use well formatted boolean value
|
|
|
|
;;
|
|
|
|
auto)
|
|
|
|
# testing the "--auto-merge" option only if config is "auto"
|
|
|
|
init_meld_help_msg
|
|
|
|
|
|
|
|
case "$meld_help_msg" in
|
|
|
|
*"--auto-merge"* | *'[OPTION...]'*)
|
|
|
|
meld_use_auto_merge_option=true
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
meld_use_auto_merge_option=false
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
"")
|
|
|
|
meld_use_auto_merge_option=false
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
die "unknown mergetool.meld.useAutoMerge: $meld_use_auto_merge_option"
|
|
|
|
;;
|
|
|
|
esac
|
2020-01-12 00:36:56 +01:00
|
|
|
fi
|
|
|
|
}
|