diff_cmd () { "$merge_tool_path" "$LOCAL" "$REMOTE" } merge_cmd () { check_meld_for_features option_auto_merge= if test "$meld_use_auto_merge_option" = true then option_auto_merge="--auto-merge" fi if test "$meld_has_output_option" = true then "$merge_tool_path" $option_auto_merge --output="$MERGED" \ "$LOCAL" "$BASE" "$REMOTE" else "$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE" fi } # 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 } # 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" then 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" then 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 fi }