All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Aguilar <davvid@gmail.com>
To: Paul Mackerras <paulus@samba.org>
Cc: Markus Heidelberg <markus.heidelberg@web.de>,
	Nanako Shiraishi <nanako3@lavabit.com>,
	Junio C Hamano <gitster@pobox.com>,
	git@vger.kernel.org
Subject: [PATCH v5] gitk: Use git-difftool for external diffs when git >= 1.7.0
Date: Thu,  8 Apr 2010 02:08:10 -0700	[thread overview]
Message-ID: <1270717690-32133-1-git-send-email-davvid@gmail.com> (raw)
In-Reply-To: <20100408090211.GA31594@gmail.com>

git-difftool is used instead of the built-in external diff
code when git is >= 1.7.0.  git-difftool's '--extcmd=frotz'
feature was first introduced in 1.7.0 and is the mechanism
through which we launch the configured difftool.

A benefit of this change is that gitk's external diff feature
no longer needs write-access to the current directory.

Signed-off-by: David Aguilar <davvid@gmail.com>
---

Unlike previous versions, this one checks the git version at runtime
and gracefully falls back to the old code when git is older.

 gitk |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/gitk b/gitk
index 1f36a3e..a49eecc 100755
--- a/gitk
+++ b/gitk
@@ -3355,6 +3355,7 @@ proc external_diff {} {
     global flist_menu_file
     global diffids
     global extdifftool
+    global git_version
 
     if {[llength $diffids] == 1} {
         # no reference commit given
@@ -3375,6 +3376,19 @@ proc external_diff {} {
         set diffidto [lindex $diffids 1]
     }
 
+    if {[package vcompare $git_version "1.7.0"] >= 0} {
+        set cmd [list "git" "difftool" "--no-prompt" "--extcmd=$extdifftool"]
+        if {$diffidfrom ne $nullid && $diffidfrom ne $nullid2} {
+            lappend cmd $diffidfrom
+        }
+        if {$diffidto ne $nullid && $diffidto ne $nullid2} {
+            lappend cmd $diffidto
+        }
+        lappend cmd "--" $flist_menu_file
+        eval exec $cmd &
+        return
+    }
+
     # make sure that several diffs wont collide
     set diffdir [gitknewtmpdir]
     if {$diffdir eq {}} return
-- 
1.7.0.3.313.g87b3c

  reply	other threads:[~2010-04-08  9:08 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-27 21:45 [PATCH] gitk: Use git-difftool for external diffs David Aguilar
2010-03-28  0:01 ` [PATCH v2] " David Aguilar
2010-03-28  0:20 ` [PATCH v3] " David Aguilar
2010-03-28 10:59   ` Markus Heidelberg
2010-03-31  2:06     ` David Aguilar
2010-03-31  2:09     ` [PATCH v4] " David Aguilar
2010-04-02 11:32       ` Markus Heidelberg
2010-04-08  9:02         ` David Aguilar
2010-04-08  9:08           ` David Aguilar [this message]
2010-04-17  8:52             ` [PATCH v5] gitk: Use git-difftool for external diffs when git >= 1.7.0 Paul Mackerras
2010-04-17 22:45               ` David Aguilar
2010-04-18  2:20                 ` Jay Soffian
2010-04-20  8:11               ` [PATCH v6] gitk: Use git-difftool for external diffs when available David Aguilar
2010-06-08  8:10                 ` 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=1270717690-32133-1-git-send-email-davvid@gmail.com \
    --to=davvid@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=markus.heidelberg@web.de \
    --cc=nanako3@lavabit.com \
    --cc=paulus@samba.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.