[PATCH v1 06/11] git gui: GIT_DIR / GIT_WORK_TREE make any discovery error fatal
- From
Mark Levedahl <mlevedahl@gmail.com>
- Date
- May 14, 2026, 14:33 UTC
- Message-ID
- <20260514143322.865587-7-mlevedahl@gmail.com>
- In-Reply-To
- <20260514143322.865587-1-mlevedahl@gmail.com>
git accepts any combination of GIT_DIR and GIT_WORK_TREE to override the normal repository and worktree discovery process. git-gui should accept any such valid configuration, but overriding the discovery process means the user has assured that the combination of current directory, GIT_DIR, and GIT_WORK_TREE will lead to the correct repository and worktree. As such, an error found during discovery where either or both of GIT_DIR and GIT_WORK_TREE are set is a fatal error, no further exploration should be tried.
Provide a common proc to support displaying an error message and exiting if GIT_DIR or GIT_WORK_TREE are in the environment.
Signed-off-by: Mark Levedahl <mlevedahl@gmail.com> --- git-gui.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/git-gui.sh b/git-gui.sh index c2cf5f1..2e2ddc0 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1122,6 +1122,24 @@ unset argv0dir ## ## repository setup +proc is_gitvars_error {err} { + set havevars 0 + set GIT_DIR {} + set GIT_WORK_TREE {} + catch {set GIT_DIR $::env(GIT_DIR); set havevars 1} + catch {set GIT_WORK_TREE $::env(GIT_WORK_TREE) ; set havevars 1} + + if {$havevars} { + catch {wm withdraw .} + error_popup [strcat [mc "Invalid configuration:"] \ + "\n" "GIT_DIR: " $GIT_DIR \ + "\n" "GIT_WORK_TREE: " $GIT_WORK_TREE \ + "\n\n$err"] + return 1 + } + return 0 +} + proc set_gitdir_vars {} { global _gitdir _gitworktree env if {$_gitdir ne {}} {
-- 2.54.0.99.14