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 <redacted>
---
gitk | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/gitk b/gitk
index 90764e8..82293dd 100755
--- a/gitk
+++ b/gitk
@@ -3492,10 +3492,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--
2.0.0.257.g75cc6c6