{"thread":{"id":"26608","subject":"[PATCH 0/3] Adding Beyond Compare as a merge tool, was: Re: What's cooking in git.git (Feb 2011, #05; Wed, 23)","startedAt":"2011-02-26T10:49:40Z","lastAt":"2011-02-27T19:25:07Z","messageCount":8,"participants":["Sebastian Schuberth","Chris Packham","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"162304","messageId":"4D68DAC4.9060100@gmail.com","threadId":"26608","inReplyTo":null,"subject":"[PATCH 0/3] Adding Beyond Compare as a merge tool, was: Re: What's cooking in git.git (Feb 2011, #05; Wed, 23)","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2011-02-26T10:49:40Z","receivedAt":"2011-02-26T10:49:40Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"This is the follow-up to\n\nhttp://marc.info/?l=git&m=129871641232007&w=2\n\nand an alternative to the proposed\n\ncp/mergetool-beyondcompare\n\nSebastian Schuberth (3):\n   mergetool--lib: Sort tools alphabetically for easier lookup\n   mergetool--lib: Add Beyond Compare 3 as a tool\n   mergetool--lib: Add the proper executable name for ECMerge\n\n  Documentation/git-difftool.txt         |    4 +-\n  Documentation/git-mergetool.txt        |    4 +-\n  Documentation/merge-config.txt         |    8 +-\n  contrib/completion/git-completion.bash |    2 +-\n  git-gui/lib/mergetool.tcl              |  101 +++++++------\n  git-mergetool--lib.sh                  |  250 \n+++++++++++++++++---------------\n  6 files changed, 198 insertions(+), 171 deletions(-)\n\n-- \n1.7.3.2.msysgit.6.dirty\n"},{"id":"162305","messageId":"4D68DB22.8000105@gmail.com","threadId":"26608","inReplyTo":"4D68DAC4.9060100@gmail.com","subject":"[PATCH 1/3] mergetool--lib: Sort tools alphabetically for easier lookup","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2011-02-26T10:51:14Z","receivedAt":"2011-02-26T10:51:14Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>\n---\n Documentation/git-difftool.txt  |    4 +-\n Documentation/git-mergetool.txt |    4 +-\n Documentation/merge-config.txt  |    8 +-\n git-gui/lib/mergetool.tcl       |   94 ++++++++--------\n git-mergetool--lib.sh           |  245 +++++++++++++++++++--------------------\n 5 files changed, 177 insertions(+), 178 deletions(-)\n\ndiff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt\nindex db87f1d..4c8825d 100644\n--- a/Documentation/git-difftool.txt\n+++ b/Documentation/git-difftool.txt\n@@ -31,8 +31,8 @@ OPTIONS\n --tool=<tool>::\n \tUse the diff tool specified by <tool>.\n \tValid merge tools are:\n-\tkdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,\n-\tecmerge, diffuse, opendiff, p4merge and araxis.\n+\taraxis, diffuse, emerge, ecmerge, gvimdiff, kdiff3,\n+\tkompare, meld, opendiff, p4merge, tkdiff, vimdiff and xxdiff.\n +\n If a diff tool is not specified, 'git difftool'\n will use the configuration variable `diff.tool`.  If the\ndiff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt\nindex 1f75a84..4987245 100644\n--- a/Documentation/git-mergetool.txt\n+++ b/Documentation/git-mergetool.txt\n@@ -26,8 +26,8 @@ OPTIONS\n --tool=<tool>::\n \tUse the merge resolution program specified by <tool>.\n \tValid merge tools are:\n-\tkdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,\n-\tdiffuse, tortoisemerge, opendiff, p4merge and araxis.\n+\taraxis, diffuse, ecmerge, emerge, gvimdiff, kdiff3,\n+\tmeld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.\n +\n If a merge resolution program is not specified, 'git mergetool'\n will use the configuration variable `merge.tool`.  If the\ndiff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt\nindex 1e5c22c..90587db 100644\n--- a/Documentation/merge-config.txt\n+++ b/Documentation/merge-config.txt\n@@ -33,10 +33,10 @@ merge.stat::\n \n merge.tool::\n \tControls which merge resolution program is used by\n-\tlinkgit:git-mergetool[1].  Valid built-in values are: \"kdiff3\",\n-\t\"tkdiff\", \"meld\", \"xxdiff\", \"emerge\", \"vimdiff\", \"gvimdiff\",\n-\t\"diffuse\", \"ecmerge\", \"tortoisemerge\", \"p4merge\", \"araxis\" and\n-\t\"opendiff\".  Any other value is treated is custom merge tool\n+\tlinkgit:git-mergetool[1].  Valid built-in values are: \"araxis\",\n+\t\"diffuse\", \"ecmerge\", \"emerge\", \"gvimdiff\", \"kdiff3\", \"meld\",\n+\t\"opendiff\", \"p4merge\", \"tkdiff\", \"tortoisemerge\", \"vimdiff\"\n+\tand \"xxdiff\".  Any other value is treated is custom merge tool\n \tand there must be a corresponding mergetool.<tool>.cmd option.\n \n merge.verbosity::\ndiff --git a/git-gui/lib/mergetool.tcl b/git-gui/lib/mergetool.tcl\nindex 3fe90e6..249e0cf 100644\n--- a/git-gui/lib/mergetool.tcl\n+++ b/git-gui/lib/mergetool.tcl\n@@ -175,43 +175,49 @@ proc merge_resolve_tool2 {} {\n \n \t# Build the command line\n \tswitch -- $tool {\n-\tkdiff3 {\n+\taraxis {\n \t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" --auto --L1 \"$MERGED (Base)\" \\\n-\t\t\t\t--L2 \"$MERGED (Local)\" --L3 \"$MERGED (Remote)\" -o \"$MERGED\" \"$BASE\" \"$LOCAL\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -wait -merge -3 -a1 \\\n+\t\t\t\t-title1:\"'$MERGED (Base)'\" -title2:\"'$MERGED (Local)'\" \\\n+\t\t\t\t-title3:\"'$MERGED (Remote)'\" \\\n+\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"]\n \t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" --auto --L1 \"$MERGED (Local)\" \\\n-\t\t\t\t--L2 \"$MERGED (Remote)\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -wait -2 \\\n+\t\t\t\t -title1:\"'$MERGED (Local)'\" -title2:\"'$MERGED (Remote)'\" \\\n+\t\t\t\t \"$LOCAL\" \"$REMOTE\" \"$MERGED\"]\n \t\t}\n \t}\n-\ttkdiff {\n+\tecmerge {\n \t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -a \"$BASE\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" --default --mode=merge3 --to=\"$MERGED\"]\n \t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" --default --mode=merge2 --to=\"$MERGED\"]\n \t\t}\n \t}\n-\tmeld {\n-\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$MERGED\" \"$REMOTE\"]\n+\temerge {\n+\t\tif {$base_stage ne {}} {\n+\t\t\tset cmdline [list \"$merge_tool_path\" -f emerge-files-with-ancestor-command \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$basename\"]\n+\t\t} else {\n+\t\t\tset cmdline [list \"$merge_tool_path\" -f emerge-files-command \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$basename\"]\n+\t\t}\n \t}\n \tgvimdiff {\n \t\tset cmdline [list \"$merge_tool_path\" -f \"$LOCAL\" \"$MERGED\" \"$REMOTE\"]\n \t}\n-\txxdiff {\n+\tkdiff3 {\n \t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -X --show-merged-pane \\\n-\t\t\t\t\t    -R {Accel.SaveAsMerged: \"Ctrl-S\"} \\\n-\t\t\t\t\t    -R {Accel.Search: \"Ctrl+F\"} \\\n-\t\t\t\t\t    -R {Accel.SearchForward: \"Ctrl-G\"} \\\n-\t\t\t\t\t    --merged-file \"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" --auto --L1 \"$MERGED (Base)\" \\\n+\t\t\t\t--L2 \"$MERGED (Local)\" --L3 \"$MERGED (Remote)\" -o \"$MERGED\" \"$BASE\" \"$LOCAL\" \"$REMOTE\"]\n \t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -X --show-merged-pane \\\n-\t\t\t\t\t    -R {Accel.SaveAsMerged: \"Ctrl-S\"} \\\n-\t\t\t\t\t    -R {Accel.Search: \"Ctrl+F\"} \\\n-\t\t\t\t\t    -R {Accel.SearchForward: \"Ctrl-G\"} \\\n-\t\t\t\t\t    --merged-file \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" --auto --L1 \"$MERGED (Local)\" \\\n+\t\t\t\t--L2 \"$MERGED (Remote)\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n \t\t}\n \t}\n+\tmeld {\n+\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$MERGED\" \"$REMOTE\"]\n+\t}\n \topendiff {\n \t\tif {$base_stage ne {}} {\n \t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"]\n@@ -219,22 +225,20 @@ proc merge_resolve_tool2 {} {\n \t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\"]\n \t\t}\n \t}\n-\tecmerge {\n-\t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" --default --mode=merge3 --to=\"$MERGED\"]\n-\t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" --default --mode=merge2 --to=\"$MERGED\"]\n-\t\t}\n+\tp4merge {\n+\t\tset cmdline [list \"$merge_tool_path\" \"$BASE\" \"$REMOTE\" \"$LOCAL\" \"$MERGED\"]\n \t}\n-\temerge {\n+\ttkdiff {\n \t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -f emerge-files-with-ancestor-command \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$basename\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -a \"$BASE\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n \t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -f emerge-files-command \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$basename\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n \t\t}\n \t}\n+\tvimdiff {\n+\t\terror_popup [mc \"Not a GUI merge tool: '%s'\" $tool]\n+\t\treturn\n+\t}\n \twinmerge {\n \t\tif {$base_stage ne {}} {\n \t\t\t# This tool does not support 3-way merges.\n@@ -245,25 +249,21 @@ proc merge_resolve_tool2 {} {\n \t\t\t\t-dl \"Theirs File\" -dr \"Mine File\" \"$REMOTE\" \"$LOCAL\" \"$MERGED\"]\n \t\t}\n \t}\n-\taraxis {\n+\txxdiff {\n \t\tif {$base_stage ne {}} {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -wait -merge -3 -a1 \\\n-\t\t\t\t-title1:\"'$MERGED (Base)'\" -title2:\"'$MERGED (Local)'\" \\\n-\t\t\t\t-title3:\"'$MERGED (Remote)'\" \\\n-\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -X --show-merged-pane \\\n+\t\t\t\t\t    -R {Accel.SaveAsMerged: \"Ctrl-S\"} \\\n+\t\t\t\t\t    -R {Accel.Search: \"Ctrl+F\"} \\\n+\t\t\t\t\t    -R {Accel.SearchForward: \"Ctrl-G\"} \\\n+\t\t\t\t\t    --merged-file \"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"]\n \t\t} else {\n-\t\t\tset cmdline [list \"$merge_tool_path\" -wait -2 \\\n-\t\t\t\t -title1:\"'$MERGED (Local)'\" -title2:\"'$MERGED (Remote)'\" \\\n-\t\t\t\t \"$LOCAL\" \"$REMOTE\" \"$MERGED\"]\n+\t\t\tset cmdline [list \"$merge_tool_path\" -X --show-merged-pane \\\n+\t\t\t\t\t    -R {Accel.SaveAsMerged: \"Ctrl-S\"} \\\n+\t\t\t\t\t    -R {Accel.Search: \"Ctrl+F\"} \\\n+\t\t\t\t\t    -R {Accel.SearchForward: \"Ctrl-G\"} \\\n+\t\t\t\t\t    --merged-file \"$MERGED\" \"$LOCAL\" \"$REMOTE\"]\n \t\t}\n \t}\n-\tp4merge {\n-\t\tset cmdline [list \"$merge_tool_path\" \"$BASE\" \"$REMOTE\" \"$LOCAL\" \"$MERGED\"]\n-\t}\n-\tvimdiff {\n-\t\terror_popup [mc \"Not a GUI merge tool: '%s'\" $tool]\n-\t\treturn\n-\t}\n \tdefault {\n \t\terror_popup [mc \"Unsupported merge tool '%s'\" $tool]\n \t\treturn\ndiff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh\nindex 77d4aee..9fb82e5 100644\n--- a/git-mergetool--lib.sh\n+++ b/git-mergetool--lib.sh\n@@ -10,17 +10,17 @@ merge_mode() {\n \n translate_merge_tool_path () {\n \tcase \"$1\" in\n-\tvimdiff|vimdiff2)\n-\t\techo vim\n-\t\t;;\n-\tgvimdiff|gvimdiff2)\n-\t\techo gvim\n+\taraxis)\n+\t\techo compare\n \t\t;;\n \temerge)\n \t\techo emacs\n \t\t;;\n-\taraxis)\n-\t\techo compare\n+\tgvimdiff|gvimdiff2)\n+\t\techo gvim\n+\t\t;;\n+\tvimdiff|vimdiff2)\n+\t\techo vim\n \t\t;;\n \t*)\n \t\techo \"$1\"\n@@ -46,17 +46,16 @@ check_unchanged () {\n \n valid_tool () {\n \tcase \"$1\" in\n-\tkdiff3 | tkdiff | xxdiff | meld | opendiff | \\\n-\tvimdiff | gvimdiff | vimdiff2 | gvimdiff2 | \\\n-\temerge | ecmerge | diffuse | araxis | p4merge)\n+\taraxis | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \\\n+\tkdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | xxdiff)\n \t\t;; # happy\n-\ttortoisemerge)\n-\t\tif ! merge_mode; then\n+\tkompare)\n+\t\tif ! diff_mode; then\n \t\t\treturn 1\n \t\tfi\n \t\t;;\n-\tkompare)\n-\t\tif ! diff_mode; then\n+\ttortoisemerge)\n+\t\tif ! merge_mode; then\n \t\t\treturn 1\n \t\tfi\n \t\t;;\n@@ -89,69 +88,22 @@ run_merge_tool () {\n \tstatus=0\n \n \tcase \"$1\" in\n-\tkdiff3)\n-\t\tif merge_mode; then\n-\t\t\tif $base_present; then\n-\t\t\t\t(\"$merge_tool_path\" --auto \\\n-\t\t\t\t\t--L1 \"$MERGED (Base)\" \\\n-\t\t\t\t\t--L2 \"$MERGED (Local)\" \\\n-\t\t\t\t\t--L3 \"$MERGED (Remote)\" \\\n-\t\t\t\t\t-o \"$MERGED\" \\\n-\t\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t> /dev/null 2>&1)\n-\t\t\telse\n-\t\t\t\t(\"$merge_tool_path\" --auto \\\n-\t\t\t\t\t--L1 \"$MERGED (Local)\" \\\n-\t\t\t\t\t--L2 \"$MERGED (Remote)\" \\\n-\t\t\t\t\t-o \"$MERGED\" \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t> /dev/null 2>&1)\n-\t\t\tfi\n-\t\t\tstatus=$?\n-\t\telse\n-\t\t\t(\"$merge_tool_path\" --auto \\\n-\t\t\t\t--L1 \"$MERGED (A)\" \\\n-\t\t\t\t--L2 \"$MERGED (B)\" \"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t> /dev/null 2>&1)\n-\t\tfi\n-\t\t;;\n-\tkompare)\n-\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n-\t\t;;\n-\ttkdiff)\n-\t\tif merge_mode; then\n-\t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" -a \"$BASE\" \\\n-\t\t\t\t\t-o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"\n-\t\t\telse\n-\t\t\t\t\"$merge_tool_path\" \\\n-\t\t\t\t\t-o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"\n-\t\t\tfi\n-\t\t\tstatus=$?\n-\t\telse\n-\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n-\t\tfi\n-\t\t;;\n-\tp4merge)\n+\taraxis)\n \t\tif merge_mode; then\n-\t\t    touch \"$BACKUP\"\n+\t\t\ttouch \"$BACKUP\"\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"\n+\t\t\t\t\"$merge_tool_path\" -wait -merge -3 -a1 \\\n+\t\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\" \\\n+\t\t\t\t\t>/dev/null 2>&1\n \t\t\telse\n-\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"\n+\t\t\t\t\"$merge_tool_path\" -wait -2 \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$MERGED\" \\\n+\t\t\t\t\t>/dev/null 2>&1\n \t\t\tfi\n \t\t\tcheck_unchanged\n \t\telse\n-\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n-\t\tfi\n-\t\t;;\n-\tmeld)\n-\t\tif merge_mode; then\n-\t\t\ttouch \"$BACKUP\"\n-\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$MERGED\" \"$REMOTE\"\n-\t\t\tcheck_unchanged\n-\t\telse\n-\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n+\t\t\t\"$merge_tool_path\" -wait -2 \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t>/dev/null 2>&1\n \t\tfi\n \t\t;;\n \tdiffuse)\n@@ -170,23 +122,58 @@ run_merge_tool () {\n \t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" | cat\n \t\tfi\n \t\t;;\n-\tvimdiff|gvimdiff)\n+\tecmerge)\n \t\tif merge_mode; then\n \t\t\ttouch \"$BACKUP\"\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd J\" \\\n-\t\t\t\t\t\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"\n+\t\t\t\t\"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t\t--default --mode=merge3 --to=\"$MERGED\"\n \t\t\telse\n-\t\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd l\" \\\n-\t\t\t\t\t\"$LOCAL\" \"$MERGED\" \"$REMOTE\"\n+\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t\t--default --mode=merge2 --to=\"$MERGED\"\n \t\t\tfi\n \t\t\tcheck_unchanged\n \t\telse\n-\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd l\" \\\n+\t\t\t\"$merge_tool_path\" --default --mode=diff2 \\\n \t\t\t\t\"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n-\tvimdiff2|gvimdiff2)\n+\temerge)\n+\t\tif merge_mode; then\n+\t\t\tif $base_present; then\n+\t\t\t\t\"$merge_tool_path\" \\\n+\t\t\t\t\t-f emerge-files-with-ancestor-command \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$BASE\" \\\n+\t\t\t\t\t\"$(basename \"$MERGED\")\"\n+\t\t\telse\n+\t\t\t\t\"$merge_tool_path\" \\\n+\t\t\t\t\t-f emerge-files-command \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t\t\"$(basename \"$MERGED\")\"\n+\t\t\tfi\n+\t\t\tstatus=$?\n+\t\telse\n+\t\t\t\"$merge_tool_path\" -f emerge-files-command \\\n+\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\tfi\n+\t\t;;\n+\tgvimdiff|vimdiff)\n+\t\tif merge_mode; then\n+\t\t\ttouch \"$BACKUP\"\n+\t\t\tif $base_present; then\n+\t\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd J\" \\\n+\t\t\t\t\t\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"\n+\t\t\telse\n+\t\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd l\" \\\n+\t\t\t\t\t\"$LOCAL\" \"$MERGED\" \"$REMOTE\"\n+\t\t\tfi\n+\t\t\tcheck_unchanged\n+\t\telse\n+\t\t\t\"$merge_tool_path\" -f -d -c \"wincmd l\" \\\n+\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\tfi\n+\t\t;;\n+\tgvimdiff2|vimdiff2)\n \t\tif merge_mode; then\n \t\t\ttouch \"$BACKUP\"\n \t\t\t\"$merge_tool_path\" -f -d -c \"wincmd l\" \\\n@@ -197,30 +184,42 @@ run_merge_tool () {\n \t\t\t\t\"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n-\txxdiff)\n+\tkdiff3)\n \t\tif merge_mode; then\n-\t\t\ttouch \"$BACKUP\"\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" -X --show-merged-pane \\\n-\t\t\t\t\t-R 'Accel.SaveAsMerged: \"Ctrl-S\"' \\\n-\t\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n-\t\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n-\t\t\t\t\t--merged-file \"$MERGED\" \\\n-\t\t\t\t\t\"$LOCAL\" \"$BASE\" \"$REMOTE\"\n+\t\t\t\t(\"$merge_tool_path\" --auto \\\n+\t\t\t\t\t--L1 \"$MERGED (Base)\" \\\n+\t\t\t\t\t--L2 \"$MERGED (Local)\" \\\n+\t\t\t\t\t--L3 \"$MERGED (Remote)\" \\\n+\t\t\t\t\t-o \"$MERGED\" \\\n+\t\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t> /dev/null 2>&1)\n \t\t\telse\n-\t\t\t\t\"$merge_tool_path\" -X $extra \\\n-\t\t\t\t\t-R 'Accel.SaveAsMerged: \"Ctrl-S\"' \\\n-\t\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n-\t\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n-\t\t\t\t\t--merged-file \"$MERGED\" \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\t\t\t(\"$merge_tool_path\" --auto \\\n+\t\t\t\t\t--L1 \"$MERGED (Local)\" \\\n+\t\t\t\t\t--L2 \"$MERGED (Remote)\" \\\n+\t\t\t\t\t-o \"$MERGED\" \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t> /dev/null 2>&1)\n \t\t\tfi\n+\t\t\tstatus=$?\n+\t\telse\n+\t\t\t(\"$merge_tool_path\" --auto \\\n+\t\t\t\t--L1 \"$MERGED (A)\" \\\n+\t\t\t\t--L2 \"$MERGED (B)\" \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t> /dev/null 2>&1)\n+\t\tfi\n+\t\t;;\n+\tkompare)\n+\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n+\t\t;;\n+\tmeld)\n+\t\tif merge_mode; then\n+\t\t\ttouch \"$BACKUP\"\n+\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$MERGED\" \"$REMOTE\"\n \t\t\tcheck_unchanged\n \t\telse\n-\t\t\t\"$merge_tool_path\" \\\n-\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n-\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n-\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n \topendiff)\n@@ -239,39 +238,31 @@ run_merge_tool () {\n \t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" | cat\n \t\tfi\n \t\t;;\n-\tecmerge)\n+\tp4merge)\n \t\tif merge_mode; then\n-\t\t\ttouch \"$BACKUP\"\n+\t\t    touch \"$BACKUP\"\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t\t--default --mode=merge3 --to=\"$MERGED\"\n+\t\t\t\t\"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"\n \t\t\telse\n-\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t\t--default --mode=merge2 --to=\"$MERGED\"\n+\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"\n \t\t\tfi\n \t\t\tcheck_unchanged\n \t\telse\n-\t\t\t\"$merge_tool_path\" --default --mode=diff2 \\\n-\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n-\temerge)\n+\ttkdiff)\n \t\tif merge_mode; then\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" \\\n-\t\t\t\t\t-f emerge-files-with-ancestor-command \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$BASE\" \\\n-\t\t\t\t\t\"$(basename \"$MERGED\")\"\n+\t\t\t\t\"$merge_tool_path\" -a \"$BASE\" \\\n+\t\t\t\t\t-o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"\n \t\t\telse\n \t\t\t\t\"$merge_tool_path\" \\\n-\t\t\t\t\t-f emerge-files-command \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t\t\"$(basename \"$MERGED\")\"\n+\t\t\t\t\t-o \"$MERGED\" \"$LOCAL\" \"$REMOTE\"\n \t\t\tfi\n \t\t\tstatus=$?\n \t\telse\n-\t\t\t\"$merge_tool_path\" -f emerge-files-command \\\n-\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n+\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n \ttortoisemerge)\n@@ -286,22 +277,30 @@ run_merge_tool () {\n \t\t\tstatus=1\n \t\tfi\n \t\t;;\n-\taraxis)\n+\txxdiff)\n \t\tif merge_mode; then\n \t\t\ttouch \"$BACKUP\"\n \t\t\tif $base_present; then\n-\t\t\t\t\"$merge_tool_path\" -wait -merge -3 -a1 \\\n-\t\t\t\t\t\"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\" \\\n-\t\t\t\t\t>/dev/null 2>&1\n+\t\t\t\t\"$merge_tool_path\" -X --show-merged-pane \\\n+\t\t\t\t\t-R 'Accel.SaveAsMerged: \"Ctrl-S\"' \\\n+\t\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n+\t\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n+\t\t\t\t\t--merged-file \"$MERGED\" \\\n+\t\t\t\t\t\"$LOCAL\" \"$BASE\" \"$REMOTE\"\n \t\t\telse\n-\t\t\t\t\"$merge_tool_path\" -wait -2 \\\n-\t\t\t\t\t\"$LOCAL\" \"$REMOTE\" \"$MERGED\" \\\n-\t\t\t\t\t>/dev/null 2>&1\n+\t\t\t\t\"$merge_tool_path\" -X $extra \\\n+\t\t\t\t\t-R 'Accel.SaveAsMerged: \"Ctrl-S\"' \\\n+\t\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n+\t\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n+\t\t\t\t\t--merged-file \"$MERGED\" \\\n+\t\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n \t\t\tfi\n \t\t\tcheck_unchanged\n \t\telse\n-\t\t\t\"$merge_tool_path\" -wait -2 \"$LOCAL\" \"$REMOTE\" \\\n-\t\t\t\t>/dev/null 2>&1\n+\t\t\t\"$merge_tool_path\" \\\n+\t\t\t\t-R 'Accel.Search: \"Ctrl+F\"' \\\n+\t\t\t\t-R 'Accel.SearchForward: \"Ctrl-G\"' \\\n+\t\t\t\t\"$LOCAL\" \"$REMOTE\"\n \t\tfi\n \t\t;;\n \t*)\n-- \n1.7.3.2.msysgit.6.dirty\n"},{"id":"162306","messageId":"4D68DB61.4070607@gmail.com","threadId":"26608","inReplyTo":"4D68DAC4.9060100@gmail.com","subject":"[PATCH 2/3] mergetool--lib: Add Beyond Compare 3 as a tool","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2011-02-26T10:52:17Z","receivedAt":"2011-02-26T10:52:17Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>\n---\n Documentation/git-difftool.txt         |    2 +-\n Documentation/git-mergetool.txt        |    2 +-\n Documentation/merge-config.txt         |    2 +-\n contrib/completion/git-completion.bash |    2 +-\n git-gui/lib/mergetool.tcl              |    7 +++++++\n git-mergetool--lib.sh                  |   22 ++++++++++++++++++++--\n 6 files changed, 31 insertions(+), 6 deletions(-)\n\ndiff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt\nindex 4c8825d..f087eff 100644\n--- a/Documentation/git-difftool.txt\n+++ b/Documentation/git-difftool.txt\n@@ -31,7 +31,7 @@ OPTIONS\n --tool=<tool>::\n \tUse the diff tool specified by <tool>.\n \tValid merge tools are:\n-\taraxis, diffuse, emerge, ecmerge, gvimdiff, kdiff3,\n+\taraxis, bc3, diffuse, emerge, ecmerge, gvimdiff, kdiff3,\n \tkompare, meld, opendiff, p4merge, tkdiff, vimdiff and xxdiff.\n +\n If a diff tool is not specified, 'git difftool'\ndiff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt\nindex 4987245..740b3f1 100644\n--- a/Documentation/git-mergetool.txt\n+++ b/Documentation/git-mergetool.txt\n@@ -26,7 +26,7 @@ OPTIONS\n --tool=<tool>::\n \tUse the merge resolution program specified by <tool>.\n \tValid merge tools are:\n-\taraxis, diffuse, ecmerge, emerge, gvimdiff, kdiff3,\n+\taraxis, bc3, diffuse, ecmerge, emerge, gvimdiff, kdiff3,\n \tmeld, opendiff, p4merge, tkdiff, tortoisemerge, vimdiff and xxdiff.\n +\n If a merge resolution program is not specified, 'git mergetool'\ndiff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt\nindex 90587db..33bf74c 100644\n--- a/Documentation/merge-config.txt\n+++ b/Documentation/merge-config.txt\n@@ -34,7 +34,7 @@ merge.stat::\n merge.tool::\n \tControls which merge resolution program is used by\n \tlinkgit:git-mergetool[1].  Valid built-in values are: \"araxis\",\n-\t\"diffuse\", \"ecmerge\", \"emerge\", \"gvimdiff\", \"kdiff3\", \"meld\",\n+\t\"bc3\", \"diffuse\", \"ecmerge\", \"emerge\", \"gvimdiff\", \"kdiff3\", \"meld\",\n \t\"opendiff\", \"p4merge\", \"tkdiff\", \"tortoisemerge\", \"vimdiff\"\n \tand \"xxdiff\".  Any other value is treated is custom merge tool\n \tand there must be a corresponding mergetool.<tool>.cmd option.\ndiff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash\nindex 893b771..058c2a9 100755\n--- a/contrib/completion/git-completion.bash\n+++ b/contrib/completion/git-completion.bash\n@@ -1358,7 +1358,7 @@ _git_diff ()\n }\n \n __git_mergetools_common=\"diffuse ecmerge emerge kdiff3 meld opendiff\n-\t\t\ttkdiff vimdiff gvimdiff xxdiff araxis p4merge\n+\t\t\ttkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3\n \"\n \n _git_difftool ()\ndiff --git a/git-gui/lib/mergetool.tcl b/git-gui/lib/mergetool.tcl\nindex 249e0cf..3c8e73b 100644\n--- a/git-gui/lib/mergetool.tcl\n+++ b/git-gui/lib/mergetool.tcl\n@@ -187,6 +187,13 @@ proc merge_resolve_tool2 {} {\n \t\t\t\t \"$LOCAL\" \"$REMOTE\" \"$MERGED\"]\n \t\t}\n \t}\n+\tbc3 {\n+\t\tif {$base_stage ne {}} {\n+\t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" -mergeoutput=\"$MERGED\"]\n+\t\t} else {\n+\t\t\tset cmdline [list \"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" -mergeoutput=\"$MERGED\"]\n+\t\t}\n+\t}\n \tecmerge {\n \t\tif {$base_stage ne {}} {\n \t\t\tset cmdline [list \"$merge_tool_path\" \"$BASE\" \"$LOCAL\" \"$REMOTE\" --default --mode=merge3 --to=\"$MERGED\"]\ndiff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh\nindex 9fb82e5..3ac6231 100644\n--- a/git-mergetool--lib.sh\n+++ b/git-mergetool--lib.sh\n@@ -13,6 +13,9 @@ translate_merge_tool_path () {\n \taraxis)\n \t\techo compare\n \t\t;;\n+\tbc3)\n+\t\techo BCompare\n+\t\t;;\n \temerge)\n \t\techo emacs\n \t\t;;\n@@ -46,7 +49,7 @@ check_unchanged () {\n \n valid_tool () {\n \tcase \"$1\" in\n-\taraxis | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \\\n+\taraxis | bc3 | diffuse | ecmerge | emerge | gvimdiff | gvimdiff2 | \\\n \tkdiff3 | meld | opendiff | p4merge | tkdiff | vimdiff | vimdiff2 | xxdiff)\n \t\t;; # happy\n \tkompare)\n@@ -106,6 +109,21 @@ run_merge_tool () {\n \t\t\t\t>/dev/null 2>&1\n \t\tfi\n \t\t;;\n+\tbc3)\n+\t\tif merge_mode; then\n+\t\t\ttouch \"$BACKUP\"\n+\t\t\tif $base_present; then\n+\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \\\n+\t\t\t\t\t-mergeoutput=\"$MERGED\"\n+\t\t\telse\n+\t\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\" \\\n+\t\t\t\t\t-mergeoutput=\"$MERGED\"\n+\t\t\tfi\n+\t\t\tcheck_unchanged\n+\t\telse\n+\t\t\t\"$merge_tool_path\" \"$LOCAL\" \"$REMOTE\"\n+\t\tfi\n+\t\t;;\n \tdiffuse)\n \t\tif merge_mode; then\n \t\t\ttouch \"$BACKUP\"\n@@ -342,7 +360,7 @@ guess_merge_tool () {\n \t\telse\n \t\t\ttools=\"opendiff kdiff3 tkdiff xxdiff meld $tools\"\n \t\tfi\n-\t\ttools=\"$tools gvimdiff diffuse ecmerge p4merge araxis\"\n+\t\ttools=\"$tools gvimdiff diffuse ecmerge p4merge araxis bc3\"\n \tfi\n \tcase \"${VISUAL:-$EDITOR}\" in\n \t*vim*)\n-- \n1.7.3.2.msysgit.6.dirty\n"},{"id":"162307","messageId":"4D68DBB0.2020909@gmail.com","threadId":"26608","inReplyTo":"4D68DAC4.9060100@gmail.com","subject":"[PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2011-02-26T10:53:36Z","receivedAt":"2011-02-26T10:53:36Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>\n---\n git-mergetool--lib.sh |    3 +++\n 1 files changed, 3 insertions(+), 0 deletions(-)\n\ndiff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh\nindex 3ac6231..95da00b 100644\n--- a/git-mergetool--lib.sh\n+++ b/git-mergetool--lib.sh\n@@ -16,6 +16,9 @@ translate_merge_tool_path () {\n \tbc3)\n \t\techo BCompare\n \t\t;;\n+\tecmerge)\n+\t\techo guimerge\n+\t\t;;\n \temerge)\n \t\techo emacs\n \t\t;;\n-- \n1.7.3.2.msysgit.6.dirty\n"},{"id":"162339","messageId":"4D69E628.5040007@gmail.com","threadId":"26608","inReplyTo":"4D68DBB0.2020909@gmail.com","subject":"Re: [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge","fromName":"Chris Packham","fromEmail":"judge.packham@gmail.com","sentAt":"2011-02-27T05:50:32Z","receivedAt":"2011-02-27T05:50:32Z","isPatch":true,"sender":{"key":"judge.packham@gmail.com","avatar":"https://avatars.githubusercontent.com/u/155667?v=4"},"body":"On 26/02/11 23:53, Sebastian Schuberth wrote:\n> Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>\n> ---\n>  git-mergetool--lib.sh |    3 +++\n>  1 files changed, 3 insertions(+), 0 deletions(-)\n> \n> diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh\n> index 3ac6231..95da00b 100644\n> --- a/git-mergetool--lib.sh\n> +++ b/git-mergetool--lib.sh\n> @@ -16,6 +16,9 @@ translate_merge_tool_path () {\n>  \tbc3)\n>  \t\techo BCompare\n>  \t\t;;\n> +\tecmerge)\n> +\t\techo guimerge\n> +\t\t;;\n>  \temerge)\n>  \t\techo emacs\n>  \t\t;;\n\nI think this is another case of linux/windows versions of the\napplication having different executable names.\n\nchrisp@laptop:~> tar -tf Download/ecmerge-2.3.123.linux.x86.tbz\n/usr/local/bin/ecmerge\n/opt/elliecomputing/ecmerge/guimerge\n/opt/elliecomputing/ecmerge/guimerge.exe\n"},{"id":"162345","messageId":"7v39n96dtj.fsf@alter.siamese.dyndns.org","threadId":"26608","inReplyTo":"4D68DAC4.9060100@gmail.com","subject":"Re: [PATCH 0/3] Adding Beyond Compare as a merge tool, was: Re: What's cooking in git.git (Feb 2011, #05; Wed, 23)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-02-27T09:12:40Z","receivedAt":"2011-02-27T09:12:40Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Sebastian Schuberth <sschuberth@gmail.com> writes:\n\n> Sebastian Schuberth (3):\n>   mergetool--lib: Sort tools alphabetically for easier lookup\n>   mergetool--lib: Add Beyond Compare 3 as a tool\n>   mergetool--lib: Add the proper executable name for ECMerge\n>\n>  Documentation/git-difftool.txt         |    4 +-\n>  Documentation/git-mergetool.txt        |    4 +-\n>  Documentation/merge-config.txt         |    8 +-\n>  contrib/completion/git-completion.bash |    2 +-\n>  git-gui/lib/mergetool.tcl              |  101 +++++++------\n>  git-mergetool--lib.sh                  |  250\n> +++++++++++++++++---------------\n>  6 files changed, 198 insertions(+), 171 deletions(-)\n\nOhh, somebody line-wrapped your message.\n\nI've dropped git-gui/ bits from the series, and queued the remainder as\nss/mergetool-lib branch.  I also forked git-gui and queued the git-gui/\nbits there to create ss/git-gui-mergetool branch.\n\nWhen the ss/mergetool-lib branch gets ready to be merged to 'next', I'll\nask Pat to keep an eye on the ss/git-gui-mergetool branch and we will\ncoordinate the merge of these two topics to our respective 'master'\nbranches to make sure that the git-core side graduates first and followed\nby git-gui side.\n\nThanks.\n"},{"id":"162350","messageId":"AANLkTi=CuyNLNuuootcd8_H9Zh=WqAwiS+S6PJjPAfcw@mail.gmail.com","threadId":"26608","inReplyTo":"4D69E628.5040007@gmail.com","subject":"Re: [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge","fromName":"Sebastian Schuberth","fromEmail":"sschuberth@gmail.com","sentAt":"2011-02-27T10:37:39Z","receivedAt":"2011-02-27T10:37:39Z","isPatch":true,"sender":{"key":"sschuberth@gmail.com","avatar":"https://avatars.githubusercontent.com/u/349154?v=4"},"body":"On Sun, Feb 27, 2011 at 06:50, Chris Packham <judge.packham@gmail.com> wrote:\n\n>> +     ecmerge)\n>> +             echo guimerge\n>> +             ;;\n>>       emerge)\n>>               echo emacs\n>>               ;;\n>\n> I think this is another case of linux/windows versions of the\n> application having different executable names.\n>\n> chrisp@laptop:~> tar -tf Download/ecmerge-2.3.123.linux.x86.tbz\n> /usr/local/bin/ecmerge\n> /opt/elliecomputing/ecmerge/guimerge\n> /opt/elliecomputing/ecmerge/guimerge.exe\n\nIndeed, well except that Linux has both \"ecmerge\" and \"guimerge\",\nwhereas Windows only has \"guimerge\", which is why I went with the\nlatter. Giving it a second thought, my patch is a little inconvenient\nfor Linux users, as it will stop making ecmerge work out of the box\n(without first setting mergetool.ecmerge.path), whereas Windows users\nneed to set mergetool.ecmerge.path anyway.\n\nI've also contacted the makers of ECMerge and asked them to unify the\nnaming across platforms. Maybe we should just drop this patch until\nthey did.\n\nChris, what do you think?\n\n-- \nSebastian Schuberth\n"},{"id":"162379","messageId":"4D6AA513.1050002@gmail.com","threadId":"26608","inReplyTo":"AANLkTi=CuyNLNuuootcd8_H9Zh=WqAwiS+S6PJjPAfcw@mail.gmail.com","subject":"Re: [PATCH 3/3] mergetool--lib: Add the proper executable name for ECMerge","fromName":"Chris Packham","fromEmail":"judge.packham@gmail.com","sentAt":"2011-02-27T19:25:07Z","receivedAt":"2011-02-27T19:25:07Z","isPatch":true,"sender":{"key":"judge.packham@gmail.com","avatar":"https://avatars.githubusercontent.com/u/155667?v=4"},"body":"On 27/02/11 23:37, Sebastian Schuberth wrote:\n> On Sun, Feb 27, 2011 at 06:50, Chris Packham <judge.packham@gmail.com> wrote:\n> \n>>> +     ecmerge)\n>>> +             echo guimerge\n>>> +             ;;\n>>>       emerge)\n>>>               echo emacs\n>>>               ;;\n>>\n>> I think this is another case of linux/windows versions of the\n>> application having different executable names.\n>>\n>> chrisp@laptop:~> tar -tf Download/ecmerge-2.3.123.linux.x86.tbz\n>> /usr/local/bin/ecmerge\n>> /opt/elliecomputing/ecmerge/guimerge\n>> /opt/elliecomputing/ecmerge/guimerge.exe\n> \n> Indeed, well except that Linux has both \"ecmerge\" and \"guimerge\",\n> whereas Windows only has \"guimerge\", which is why I went with the\n> latter. Giving it a second thought, my patch is a little inconvenient\n> for Linux users, as it will stop making ecmerge work out of the box\n> (without first setting mergetool.ecmerge.path), whereas Windows users\n> need to set mergetool.ecmerge.path anyway.\n> \n> I've also contacted the makers of ECMerge and asked them to unify the\n> naming across platforms. Maybe we should just drop this patch until\n> they did.\n> \n> Chris, what do you think? \n\nIf the ecmerge makers can get 'ecmerge' to be a valid command on windows\nthen that'd be the best solution for now.\n\nI have a different idea for handling this going forward (maybe for\nv1.8.0). One benefit of having built-in knowledge of a mergetool, as\nopposed to using config variables, is git knows when to do a 2-way merge\nvs a 3-way merge. So instead of having a single mergetool.cmd maybe we\nneed mergetool.cmd2way and mergetool.cmd3way, all of the existing\nsupported mergetools could then be expressed as a set of config\nvariables (maybe installed in system or global configs by the git\ninstallation process).\n\nI'll try to write that up as a proper v1.8.0 proposal when I get a chance.\n"}]}