summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Saasen <ssaasen@atlassian.com>2013-10-13 09:29:35 +1100
committerJonathan Nieder <jrnieder@gmail.com>2013-10-13 16:00:57 -0700
commitc5f424fd014488bd8a92b97f52bfe47823bc2128 (patch)
tree56bc7d54267bfe09027c8f6771d176bf02e346fb
parent22bbddeafe5d5285def3dda76b300efd1363db1e (diff)
downloadgit-c5f424fd014488bd8a92b97f52bfe47823bc2128.tar.gz
mergetools/diffmerge: support DiffMerge as a git mergetool
DiffMerge is a non-free (but gratis) tool that supports OS X, Windows and Linux. See http://www.sourcegear.com/diffmerge/ DiffMerge includes a script `/usr/bin/diffmerge` that can be used to launch the graphical compare tool. This change adds mergetool support for DiffMerge and adds 'diffmerge' as an option to the mergetool help. Signed-off-by: Stefan Saasen <ssaasen@atlassian.com> Acked-by: David Aguilar <davvid@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
-rw-r--r--contrib/completion/git-completion.bash2
-rw-r--r--git-mergetool--lib.sh3
-rw-r--r--mergetools/diffmerge15
3 files changed, 18 insertions, 2 deletions
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 86f77345fd..dba3c15700 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1188,7 +1188,7 @@ _git_diff ()
__git_complete_revlist_file
}
-__git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff
+__git_mergetools_common="diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare
"
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index feee6a4a0d..858bc37e80 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -250,7 +250,8 @@ list_merge_tool_candidates () {
else
tools="opendiff kdiff3 tkdiff xxdiff meld $tools"
fi
- tools="$tools gvimdiff diffuse ecmerge p4merge araxis bc3 codecompare"
+ tools="$tools gvimdiff diffuse diffmerge ecmerge"
+ tools="$tools p4merge araxis bc3 codecompare"
fi
case "${VISUAL:-$EDITOR}" in
*vim*)
diff --git a/mergetools/diffmerge b/mergetools/diffmerge
new file mode 100644
index 0000000000..85ac720157
--- /dev/null
+++ b/mergetools/diffmerge
@@ -0,0 +1,15 @@
+diff_cmd () {
+ "$merge_tool_path" "$LOCAL" "$REMOTE" >/dev/null 2>&1
+}
+
+merge_cmd () {
+ if $base_present
+ then
+ "$merge_tool_path" --merge --result="$MERGED" \
+ "$LOCAL" "$BASE" "$REMOTE"
+ else
+ "$merge_tool_path" --merge \
+ --result="$MERGED" "$LOCAL" "$REMOTE"
+ fi
+ status=$?
+}