From: David Aguilar <davvid@gmail.com>
To: gitster@pobox.com
Cc: git@vger.kernel.org, Sebastian Pipping <sebastian@pipping.org>,
David Aguilar <davvid@gmail.com>
Subject: [PATCH 3/3] mergetool-lib: add diffuse as merge and diff tool
Date: Thu, 2 Apr 2009 03:30:46 -0700 [thread overview]
Message-ID: <1238668246-762-3-git-send-email-davvid@gmail.com> (raw)
In-Reply-To: <1238668246-762-2-git-send-email-davvid@gmail.com>
From: Sebastian Pipping <sebastian@pipping.org>
This adds diffuse as a built-in merge tool.
Signed-off-by: Sebastian Pipping <sebastian@pipping.org>
Signed-off-by: David Aguilar <davvid@gmail.com>
---
This is Sebastian's patch rebased onto Junio's pu branch.
I removed the git-gui part because I think git-gui
patches go through Shawn / git-gui.git?
This diff is still too big, so maybe we should
refactor the $mergetool_candidate code into
mergetool-lib as well.
Documentation/git-difftool.txt | 4 ++--
Documentation/git-mergetool.txt | 3 ++-
Documentation/merge-config.txt | 7 ++++---
contrib/completion/git-completion.bash | 3 ++-
git-difftool-helper.sh | 6 ++----
git-mergetool-lib.sh | 17 ++++++++++++++++-
git-mergetool.sh | 4 ++--
7 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/Documentation/git-difftool.txt b/Documentation/git-difftool.txt
index 73d4782..15b247b 100644
--- a/Documentation/git-difftool.txt
+++ b/Documentation/git-difftool.txt
@@ -30,8 +30,8 @@ OPTIONS
--tool=<tool>::
Use the diff tool specified by <tool>.
Valid merge tools are:
- kdiff3, kompare, tkdiff, meld, xxdiff, emerge,
- vimdiff, gvimdiff, ecmerge, and opendiff
+ kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff,
+ ecmerge, diffuse and opendiff
+
If a diff tool is not specified, 'git-difftool'
will use the configuration variable `diff.tool`. If the
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index 5d3c632..c3a8092 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -26,7 +26,8 @@ OPTIONS
--tool=<tool>::
Use the merge resolution program specified by <tool>.
Valid merge tools are:
- kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, and opendiff
+ kdiff3, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge,
+ diffuse and opendiff
+
If a merge resolution program is not specified, 'git-mergetool'
will use the configuration variable `merge.tool`. If the
diff --git a/Documentation/merge-config.txt b/Documentation/merge-config.txt
index 1ff08ff..c4fc3eb 100644
--- a/Documentation/merge-config.txt
+++ b/Documentation/merge-config.txt
@@ -22,9 +22,10 @@ merge.stat::
merge.tool::
Controls which merge resolution program is used by
linkgit:git-mergetool[1]. Valid built-in values are: "kdiff3",
- "tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", and
- "opendiff". Any other value is treated is custom merge tool
- and there must be a corresponding mergetool.<tool>.cmd option.
+ "tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff",
+ "diffuse" and "opendiff". Any other value is treated as a custom
+ merge tool and there must be a corresponding mergetool.<tool>.cmd
+ option.
merge.verbosity::
Controls the amount of output shown by the recursive merge
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index e72ce24..4fcd77a 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1173,7 +1173,8 @@ _git_mergetool ()
--tool=*)
__gitcomp "
kdiff3 tkdiff meld xxdiff emerge
- vimdiff gvimdiff ecmerge opendiff
+ vimdiff gvimdiff ecmerge diffuse
+ opendiff
" "" "${cur##--tool=}"
return
;;
diff --git a/git-difftool-helper.sh b/git-difftool-helper.sh
index 2dfc870..d174b34 100755
--- a/git-difftool-helper.sh
+++ b/git-difftool-helper.sh
@@ -1,7 +1,5 @@
#!/bin/sh
# git-difftool-helper is a GIT_EXTERNAL_DIFF-compatible diff tool launcher.
-# It supports kdiff3, kompare, tkdiff, xxdiff, meld, opendiff,
-# emerge, ecmerge, vimdiff, gvimdiff, and custom user-configurable tools.
# This script is typically launched by using the 'git difftool'
# convenience command.
#
@@ -70,9 +68,9 @@ if test -z "$merge_tool"; then
if test -n "$DISPLAY"; then
# If gnome then prefer meld, otherwise, prefer kdiff3 or kompare
if test -n "$GNOME_DESKTOP_SESSION_ID" ; then
- merge_tool_candidates="meld kdiff3 kompare tkdiff xxdiff gvimdiff"
+ merge_tool_candidates="meld kdiff3 kompare tkdiff xxdiff gvimdiff diffuse"
else
- merge_tool_candidates="kdiff3 kompare tkdiff xxdiff meld gvimdiff"
+ merge_tool_candidates="kdiff3 kompare tkdiff xxdiff meld gvimdiff diffuse"
fi
fi
if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then
diff --git a/git-mergetool-lib.sh b/git-mergetool-lib.sh
index 3ba332b..197533e 100644
--- a/git-mergetool-lib.sh
+++ b/git-mergetool-lib.sh
@@ -29,7 +29,7 @@ check_unchanged () {
valid_tool () {
case "$1" in
- kdiff3 | kompare | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge)
+ kdiff3 | kompare | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | gvimdiff | ecmerge | diffuse)
if test "$1" = "kompare" && ! diff_mode; then
return 1
fi
@@ -108,6 +108,21 @@ run_mergetool () {
fi
check_unchanged
;;
+ diffuse)
+ if merge_mode; then
+ touch "$BACKUP"
+ fi
+ if $base_present; then
+ "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE" "$BASE" | cat
+ else
+ if merge_mode; then
+ "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE" | cat
+ else
+ "$merge_tool_path" "$LOCAL" "$REMOTE" | cat
+ fi
+ fi
+ check_unchanged
+ ;;
vimdiff)
if merge_mode; then
touch "$BACKUP"
diff --git a/git-mergetool.sh b/git-mergetool.sh
index fd81ad7..16562bd 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -284,9 +284,9 @@ fi
if test -z "$merge_tool" ; then
if test -n "$DISPLAY"; then
if test -n "$GNOME_DESKTOP_SESSION_ID" ; then
- merge_tool_candidates="meld kdiff3 tkdiff xxdiff gvimdiff"
+ merge_tool_candidates="meld kdiff3 tkdiff xxdiff gvimdiff diffuse"
else
- merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff"
+ merge_tool_candidates="kdiff3 tkdiff xxdiff meld gvimdiff diffuse"
fi
fi
if echo "${VISUAL:-$EDITOR}" | grep 'emacs' > /dev/null 2>&1; then
--
1.6.2.1.303.g63699
next prev parent reply other threads:[~2009-04-02 10:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-02 10:30 [PATCH 1/3] mergetool-lib: specialize kdiff3 options when in diff mode David Aguilar
2009-04-02 10:30 ` [PATCH 2/3] mergetool-lib: specialize xxdiff " David Aguilar
2009-04-02 10:30 ` David Aguilar [this message]
2009-04-02 10:42 ` [PATCH 3/3] mergetool-lib: add diffuse as merge and diff tool David Aguilar
2009-04-02 18:06 ` Junio C Hamano
2009-04-02 21:20 ` [PATCH 2/3] mergetool-lib: specialize xxdiff options when in diff mode Markus Heidelberg
2009-04-03 1:56 ` David Aguilar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1238668246-762-3-git-send-email-davvid@gmail.com \
--to=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=sebastian@pipping.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.