Re: [PATCH v1 08/11] git-gui: simplify [is_bare] to report if a worktree is known
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- May 16, 2026, 08:12 UTC
- 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:
Show 60 quoted lines
> 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 <mlevedahl@gmail.com>
> ---
> 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