From: Johannes Sixt Date: Sat, 16 May 2026 08:12:45 GMT Subject: Re: [PATCH v1 08/11] git-gui: simplify [is_bare] to report if a worktree is known Message-ID: <267ad9f6-7816-41ba-8981-bc0e4286577c@kdbg.org> In-Reply-To: <20260514143322.865587-9-mlevedahl@gmail.com> Am 14.05.26 um 16:33 schrieb Mark Levedahl: > git-gui includes proc is_bare, used in several places to make decisions > on whether a worktree exists, but also in discovery to tell if a > worktree can be supported. > > But, is_bare is out of date with regard to multiple worktrees, safe > repository guards, and possibly other relevant features known to git > rev-parse. Also, is_bare caches its result on the first call, so is not > useful if a later step in the discovery process finds a worktree. > > So, simplify is_bare to report whether git-gui has a worktree or is > working only from a repository. > > Signed-off-by: Mark Levedahl > --- > git-gui.sh | 25 +------------------------ > 1 file changed, 1 insertion(+), 24 deletions(-) > > diff --git a/git-gui.sh b/git-gui.sh > index 81789dd..a03eaa7 100755 > --- a/git-gui.sh > +++ b/git-gui.sh > @@ -372,7 +372,6 @@ if {[tk windowingsystem] eq "aqua"} { > set _appname {Git Gui} > set _gitdir {} > set _gitworktree {} > -set _isbare {} > set _githtmldir {} > set _prefix {} > set _reponame {} > @@ -524,29 +523,7 @@ proc get_config {name} { > } > > proc is_bare {} { > - global _isbare > - global _gitdir > - global _gitworktree > - > - if {$_isbare eq {}} { > - if {[catch { > - set _bare [git rev-parse --is-bare-repository] > - switch -- $_bare { > - true { set _isbare 1 } > - false { set _isbare 0} > - default { throw } > - } > - }]} { > - if {[is_config_true core.bare] > - || ($_gitworktree eq {} > - && [lindex [file split $_gitdir] end] ne {.git})} { > - set _isbare 1 > - } else { > - set _isbare 0 > - } > - } > - } > - return $_isbare > + return [expr {$::_gitworktree eq {}}] > } > > ###################################################################### Very nice! IMO, regardless of which way we end up rewriting repository discovery, the end result should be that we can use $_gitworktree like this to tell whether we are in a bare repository or not. -- Hannes