gitk: Honor TMPDIR when viewing external diffs
authorDavid Aguilar <davvid@gmail.com>
Fri, 13 Jun 2014 21:13:37 +0000 (14:13 -0700)
committerPaul Mackerras <paulus@samba.org>
Sun, 15 Jun 2014 01:35:50 +0000 (11:35 +1000)
gitk fails to show diffs when browsing a read-only repository.
This is due to gitk's assumption that the current directory is always
writable.

Teach gitk to honor either the GITK_TMPDIR or TMPDIR environment
variables. This allows users to override the default location
used when writing temporary files.

Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk
diff --git a/gitk b/gitk
index 68a61dd7ebdf10bb5758e7e9309e5a7189cb6116..c66643520413dea6b90a3a0231c2772a856fade4 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -3493,10 +3493,17 @@ proc flist_hl {only} {
 }
 
 proc gitknewtmpdir {} {
-    global diffnum gitktmpdir gitdir
+    global diffnum gitktmpdir gitdir env
 
     if {![info exists gitktmpdir]} {
-       set gitktmpdir [file join $gitdir [format ".gitk-tmp.%s" [pid]]]
+       if {[info exists env(GITK_TMPDIR)]} {
+           set tmpdir $env(GITK_TMPDIR)
+       } elseif {[info exists env(TMPDIR)]} {
+           set tmpdir $env(TMPDIR)
+       } else {
+           set tmpdir $gitdir
+       }
+       set gitktmpdir [file join $tmpdir [format ".gitk-tmp.%s" [pid]]]
        if {[catch {file mkdir $gitktmpdir} err]} {
            error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err"
            unset gitktmpdir