git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3] Enable auto-merge for meld to follow the vim-diff beharior

From
SGsunlin via GitGitGadget <gitgitgadget@gmail.com>
Date
Jun 29, 2020, 07:07 UTC
Message-ID
<pull.781.v3.git.git.1593414441313.gitgitgadget@gmail.com>
In-Reply-To
<pull.781.v2.git.git.1591672753363.gitgitgadget@gmail.com>
From: "lin.sun" <lin.sun@zoom.us>

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 <lin.sun@zoom.us>
---
    Enable auto-merge for meld to follow the vimdiff beharior
    
    Hi, the mergetool "meld" does NOT merge the no-conflict changes, while
    the mergetool "vimdiff" will merge the no-conflict changes and highlight
    the conflict parts. This patch will make the mergetool "meld" similar to
    "vimdiff", auto-merge the no-conflict changes, highlight conflict parts.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-781%2Fsunlin7%2Fmaster-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-781/sunlin7/master-v3
Pull-Request: https://github.com/git/git/pull/781
Range-diff vs v2:
 1:  6e98a10bfa ! 1:  3b70fd0bfc Enable auto-merge for meld to follow the vim-diff beharior
     @@ Commit message
      
       ## mergetools/meld ##
      @@ mergetools/meld: 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" --auto-merge --output="$MERGED" \
     ++		"$merge_tool_path" $option_auto_merge --output="$MERGED" \
       			"$LOCAL" "$BASE" "$REMOTE"
       	else
      -		"$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE"
     -+		"$merge_tool_path" --auto-merge "$LOCAL" "$MERGED" "$REMOTE"
     ++		"$merge_tool_path" $option_auto_merge "$LOCAL" "$MERGED" "$REMOTE"
       	fi
       }
       
     +@@ mergetools/meld: 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
     ++}
 mergetools/meld | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/mergetools/meld b/mergetools/meld
index 7a08470f88..91b65ff22c 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
+}

base-commit: 07d8ea56f2ecb64b75b92264770c0a664231ce17
-- 
gitgitgadget
Previous: sunlin via GitGitGadgetNext: Git Gadget
Message 4 of 74 in “Enable auto-merge for meld to follow the vim-diff beharior”
  1. Enable auto-merge for meld to follow the vim-diff behariorsunlin via GitGitGadget, May 8, 2020
  2. Pratyush YadavJun 8, 2020
  3. Enable auto-merge for meld to follow the vim-diff behariorsunlin via GitGitGadget, Jun 9, 2020
  4. Enable auto-merge for meld to follow the vim-diff behariorsunlin via GitGitGadget, Jun 29, 2020
  5. Fwd: [PATCH v3] Enable auto-merge for meld to follow the vim-diff behariorGit Gadget, Jun 29, 2020
  6. Junio C HamanoJun 30, 2020
  7. David AguilarJun 30, 2020
  8. lin.sun@zoom.usJun 30, 2020
  9. Enable auto-merge for meld to follow the vim-diff behariorlin.sun@zoom.us, Jun 30, 2020
  10. Junio C HamanoJun 30, 2020
  11. Enable auto-merge for meld to follow the vim-diff behariorsunlin via GitGitGadget, Jun 30, 2020
  12. Đoàn Trần Công DanhJun 30, 2020
  13. Đoàn Trần Công DanhJun 30, 2020
  14. Enable auto-merge for meld to follow the vim-diff behariorsunlin via GitGitGadget, Jul 1, 2020
  15. lin.sun@zoom.usJul 1, 2020
  16. David AguilarJul 1, 2020
  17. Đoàn Trần Công DanhJul 1, 2020
  18. lin.sun@zoom.usJul 1, 2020
  19. lin.sun@zoom.usJul 1, 2020
  20. Đoàn Trần Công DanhJul 1, 2020
  21. Junio C HamanoJul 1, 2020
  22. lin.sun@zoom.usJul 2, 2020
  23. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 2, 2020
  24. lin.sun@zoom.usJul 2, 2020
  25. Junio C HamanoJul 3, 2020
  26. lin.sun@zoom.usJul 3, 2020
  27. Đoàn Trần Công DanhJul 3, 2020
  28. Junio C HamanoJul 6, 2020
  29. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 3, 2020
  30. Junio C HamanoJul 3, 2020
  31. lin.sun@zoom.usJul 4, 2020
  32. lin.sun@zoom.usJul 6, 2020
  33. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 4, 2020
  34. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 6, 2020
  35. Junio C HamanoJul 6, 2020
  36. lin.sun@zoom.usJul 7, 2020
  37. Junio C HamanoJul 7, 2020
  38. lin.sun@zoom.usJul 8, 2020
  39. Junio C HamanoJul 8, 2020
  40. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 7, 2020
  41. Junio C HamanoJul 7, 2020
  42. lin.sun@zoom.usJul 7, 2020
  43. lin.sun@zoom.usJul 7, 2020
  44. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 7, 2020
  45. Đoàn Trần Công DanhJul 7, 2020
  46. lin.sun@zoom.usJul 8, 2020
  47. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 8, 2020
  48. lin.sun@zoom.usJul 8, 2020
  49. Đoàn Trần Công DanhJul 8, 2020
  50. lin.sun@zoom.usJul 8, 2020
  51. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 9, 2020
  52. Support auto-merge for meld to follow the vim-diff behaviorlin.sun@zoom.us, Jul 9, 2020
  53. Junio C HamanoJul 9, 2020
  54. Junio C HamanoJul 9, 2020
  55. lin.sun@zoom.usJul 9, 2020
  56. Junio C HamanoJul 9, 2020
  57. Junio C HamanoJul 9, 2020
  58. lin.sun@zoom.usJul 12, 2020
  59. lin.sun@zoom.usJul 12, 2020
  60. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 9, 2020
  61. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 12, 2020
  62. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 12, 2020
  63. Junio C HamanoJul 12, 2020
  64. lin.sun@zoom.usJul 12, 2020
  65. Junio C HamanoJul 13, 2020
  66. lin.sun@zoom.usJul 13, 2020
  67. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Jul 12, 2020
  68. Junio C HamanoJul 24, 2020
  69. Junio C HamanoSep 3, 2020
  70. Support auto-merge for meld to follow the vim-diff behaviorsunlin via GitGitGadget, Sep 12, 2020
  71. Junio C HamanoSep 14, 2020
  72. Lin SunSep 15, 2020
  73. Lin SunSep 9, 2020
  74. Junio C HamanoSep 9, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.