From: lin.sun@zoom.us Date: Mon, 29 Jun 2020 09:08:02 GMT Subject: RE: [PATCH v2] Enable auto-merge for meld to follow the vim-diff beharior Message-ID: In-Reply-To: <20200628103755.GB26319@danh.dev> Hi Danh, > It seems like only David Aguilar (Cc-ed) works on that file. >Look into b12d04503b (mergetools/meld: make usage of `--output` configurable and more robust, 2014-10-15), it looks like we need to check if --auto-merge option is available in meld. >Someone still live with the ancient tools ;). >meld has known --output for a long time but we still have a check for it. Thank you for your hints, I changed the patch for checking the option "--auto-merge" in meld and use this option only if it's available. The last patch is appended in attachment, or https://github.com/git/git/commit/3b70fd0bfc4086a08e27c869ff7492d567e8fdc2 Look forward it can be merged this time. Thanks Regards Lin From 3b70fd0bfc4086a08e27c869ff7492d567e8fdc2 Mon Sep 17 00:00:00 2001 From: "lin.sun" Date: Thu, 7 May 2020 07:31:14 +0800 Subject: [PATCH] Enable auto-merge for meld to follow the vim-diff beharior The mergetool "meld" does NOT merge the no-conflict changes, while the mergetool "vimdiff" will merge the no-conflict parts and highlight the conflict parts. This patch will make the mergetool "meld" similar to "vimdiff", auto-merge the no-conflict parts, highlight conflict parts. Signed-off-by: Lin Sun --- mergetools/meld | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/mergetools/meld b/mergetools/meld index 7a08470..91b65ff 100644 --- a/mergetools/meld +++ b/mergetools/meld @@ -7,13 +7,23 @@ merge_cmd () { then check_meld_for_output_version fi + if test -z "${meld_has_auto_merge_option:+set}" + then + check_meld_for_auto_merge_version + fi + + option_auto_merge= + if test "$meld_has_auto_merge_option" = true + then + option_auto_merge="--auto-merge" + fi if test "$meld_has_output_option" = true then - "$merge_tool_path" --output="$MERGED" \ + "$merge_tool_path" $option_auto_merge --output="$MERGED" \ "$LOCAL" "$BASE" "$REMOTE" else - "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE" + "$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE" fi } @@ -34,3 +44,21 @@ check_meld_for_output_version () { meld_has_output_option=false fi } + +# Check whether we should use 'meld --auto-merge ...' +check_meld_for_auto_merge_version () { + meld_path="$(git config mergetool.meld.path)" + meld_path="${meld_path:-meld}" + + if meld_has_auto_merge_option=$(git config --bool mergetool.meld.hasAutoMerge) + then + : use configured value + elif "$meld_path" --help 2>&1 | + grep -e '--auto-merge' -e '\[OPTION\.\.\.\]' >/dev/null + then + : old ones mention --auto-merge and new ones just say OPTION... + meld_has_auto_merge_option=true + else + meld_has_auto_merge_option=false + fi +} -- 2.2.0