[PATCH] gitk: Use GIT_DIR where appropriate.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:02
Subsystem:
the rest · Maintainer:
Linus Torvalds
Some places assumed .git is the GIT_DIR, resulting heads and tags not showing when it was run like "GIT_DIR=. gitk --all". This is not a contrived example --- I rely on it to verify my private copy of git.git repository before pushing it out. Define a single procedure "gitdir" and use it. Signed-off-by: Junio C Hamano <redacted> --- *** Paul, I will not be applying this to the copy Linus pulled *** into git.git repository, but sending it to you in a patch *** form. I believe that would be easier for you to work with *** than pulling from git.git along with all the other stuff. gitk | 24 +++++++++++++----------- 1 files changed, 13 insertions(+), 11 deletions(-) c41a6a0271ea966f5d5cd648b854ec78b90096a6
diff --git a/gitk b/gitk
--- a/gitk
+++ b/gitk@@ -7,17 +7,22 @@ exec wish "$0" -- "${1+$@}" # and distributed under the terms of the GNU General Public Licence, # either version 2, or (at your option) any later version. +proc gitdir {} { + global env + if {[info exists env(GIT_DIR)]} { + return $env(GIT_DIR) + } else { + return ".git" + } +} + proc getcommits {rargs} { global commits commfd phase canv mainfont env global startmsecs nextupdate global ctext maincursor textcursor leftover # check that we can find a .git directory somewhere... - if {[info exists env(GIT_DIR)]} { - set gitdir $env(GIT_DIR) - } else { - set gitdir ".git" - } + set gitdir [gitdir] if {![file isdirectory $gitdir]} { error_popup "Cannot find the git directory \"$gitdir\"." exit 1
@@ -212,7 +217,7 @@ proc parsecommit {id contents listed} { proc readrefs {} { global tagids idtags headids idheads - set tags [glob -nocomplain -types f .git/refs/tags/*] + set tags [glob -nocomplain -types f [gitdir]/refs/tags/*] foreach f $tags { catch { set fd [open $f r]
@@ -241,7 +246,7 @@ proc readrefs {} { close $fd } } - set heads [glob -nocomplain -types f .git/refs/heads/*] + set heads [glob -nocomplain -types f [gitdir]/refs/heads/*] foreach f $heads { catch { set fd [open $f r]
@@ -2752,10 +2757,7 @@ proc domktag {} { return } if {[catch { - set dir ".git" - if {[info exists env(GIT_DIR)]} { - set dir $env(GIT_DIR) - } + set dir [gitdir] set fname [file join $dir "refs/tags" $tag] set f [open $fname w] puts $f $id