[PATCH] mergetool: make Apple's FileMerge available as a merge_tool
From: Steffen Prohaska <hidden>
Date: 2016-06-15 22:43:17
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Apple's developer tools include the application FileMerge, which supports graphical three way merges with ancestor. This patch makes the tool available through git-mergetool. FileMerge is assumed to be installed at its default location. Signed-off-by: Steffen Prohaska <redacted> --- Documentation/git-mergetool.txt | 3 ++- git-mergetool.sh | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index 6c32c6d..ff4cdf2 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt@@ -25,7 +25,8 @@ OPTIONS -t or --tool=<tool>:: Use the merge resolution program specified by <tool>. Valid merge tools are: - kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, and opendiff + kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, opendiff, + and FileMerge + If a merge resolution program is not specified, 'git mergetool' will use the configuration variable merge.tool. If the
diff --git a/git-mergetool.sh b/git-mergetool.sh
index 7b66309..abe2a97 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh@@ -258,6 +258,16 @@ merge_file () { status=$? save_backup ;; + *FileMerge) + touch "$BACKUP" + if base_present; then + $merge_tool -left "$LOCAL" -right "$REMOTE" -ancestor "$BASE" -merge "$path" | cat + else + $merge_tool -left "$LOCAL" -right "$REMOTE" -merge "$path" | cat + fi + check_unchanged + save_backup + ;; esac if test "$status" -ne 0; then echo "merge of $path failed" 1>&2
@@ -326,6 +336,9 @@ if test -z "$merge_tool" ; then merge_tool_candidates="$merge_tool_candidates vimdiff" fi merge_tool_candidates="$merge_tool_candidates opendiff emerge vimdiff" + if test $(uname) = "Darwin" ; then + merge_tool_candidates="/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge $merge_tool_candidates" + fi echo "merge tool candidates: $merge_tool_candidates" for i in $merge_tool_candidates; do if test $i = emerge ; then
@@ -357,6 +370,13 @@ case "$merge_tool" in exit 1 fi ;; + *FileMerge) + merge_tool=/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge + if ! test -x $merge_tool ; then + echo "FileMerge is not available" + exit 1 + fi + ;; *) echo "Unknown merge tool: $merge_tool" exit 1
--
1.5.2.2.252.gbc777-dirty