Message ID | xmqqk15i3rp7.fsf_-_@gitster-ct.c.googlers.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gitk: to run in a bare repository (was: gitk can't be run from non-worktree folders) | expand |
On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: > Use the gitworktree helper introduced in 65bb0bda ("gitk: Fix the > display of files when filtered by path", 2011-12-13), which is > prepared to see failures from "rev-parse --show-toplevel" and other > means it tries to find the top-level of the working tree instead to > work around this issue. The resulting value in $worktree global, > when run in a bare repository, is bogus, but the code is not > prepared to run external diff correctly without a working tree > anyway ;-) > > Helped-by: Eric Sunshine <sunshine@sunshineco.com> > Signed-off-by: Junio C Hamano <gitster@pobox.com> > --- > diff --git a/gitk b/gitk > @@ -12599,7 +12599,7 @@ set cdup {} > if {[expr {[exec git rev-parse --is-inside-work-tree] == "true"}]} { > set cdup [exec git rev-parse --show-cdup] > } > -set worktree [exec git rev-parse --show-toplevel] > +set worktree [gitworktree] This helps but doesn't quite make it functional due to a bug in gitworktree() which results in: Error in startup script: can't read "_gitworktree": no such variable while executing "if {$_gitworktree eq ""} { So, to make this work, it also needs: --- >8 --- diff --git a/gitk-git/gitk b/gitk-git/gitk index abe4805ade..8cbca113e3 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -34,8 +34,7 @@ proc gitworktree {} { # cdup to obtain a relative path to the top of the worktree. If # run from the top, the ./ prefix ensures normalize expands pwd. if {[catch { set _gitworktree $env(GIT_WORK_TREE) }]} { - catch {set _gitworktree [exec git config --get core.worktree]} - if {$_gitworktree eq ""} { + if {[catch {set _gitworktree [exec git config --get core.worktree]}]} { set _gitworktree [file normalize ./[exec git rev-parse --show-cdup]] } } --- >8 ---
On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: > -- >8 -- > Subject: [PATCH] gitk: be prepared to be run in a bare repository Thanks all for cleaning up the mess I caused. I do prefer adjusting gitk like this rather than reverting the change in Git. Despite the regression, I think the case of "--show-toplevel without a working tree" is sufficiently undefined that it's probably good for callers to actually decide what the right behavior is. > Recent versions of git however notices that "rev-parse --show-toplevel" > executed in a bare repository is an error, which makes gitk stop, > even before the user could attempt to run external diff. It might be worth mentioning 2d92ab32 by name in this paragraph of the commit message. -Peff
Sorry for bumping this thread but what's the integration status of the patch? The issue still seems to be present in v2.26.0.windows.1. On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: > -- >8 -- > Subject: [PATCH] gitk: be prepared to be run in a bare repository
On Mon, Mar 30, 2020 at 11:21 AM ch <cr@onlinehome.de> wrote: > On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: > > Subject: [PATCH] gitk: be prepared to be run in a bare repository > > Sorry for bumping this thread but what's the integration status of the patch? > The issue still seems to be present in v2.26.0.windows.1. Junio just recently pulled commits into git.git from Paul's gitk repository which contain this fix, and it looks like it will make it into the Git 2.29.0 release.
Sounds good. Thanks for the heads-up! Will the release also include a fix for git-gui (which exhibits similar behavior as gitk; see [0])? -ch [0] https://lore.kernel.org/git/3c1a3e23-cf52-48cc-e9b6-f80642ca67ac@onlinehome.de/ On 11.10.2020 07:08, Eric Sunshine wrote: > On Mon, Mar 30, 2020 at 11:21 AM ch <cr@onlinehome.de> wrote: >> On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: >> > Subject: [PATCH] gitk: be prepared to be run in a bare repository >> >> Sorry for bumping this thread but what's the integration status of the patch? >> The issue still seems to be present in v2.26.0.windows.1. > > Junio just recently pulled commits into git.git from Paul's gitk > repository which contain this fix, and it looks like it will make it > into the Git 2.29.0 release. >
On Tue, Oct 13 2020, ch wrote: Hi, Please avoid top posting. > Sounds good. Thanks for the heads-up! > > Will the release also include a fix for git-gui (which exhibits > similar behavior as gitk; see [0])? > > -ch > > [0] https://lore.kernel.org/git/3c1a3e23-cf52-48cc-e9b6-f80642ca67ac@onlinehome.de/ I'm seeing this patch for the first time. It was never formally submitted to me. So as of now I have not queued it for the next release. I'll take a look at the problem and see if the patch is the correct fix and integrate it before the 2.29 release. But I don't have a lot of free time so no promises. > > On 11.10.2020 07:08, Eric Sunshine wrote: >> On Mon, Mar 30, 2020 at 11:21 AM ch <cr@onlinehome.de> wrote: >>> On Thu, Jan 23, 2020 at 11:20:36AM -0800, Junio C Hamano wrote: >>> > Subject: [PATCH] gitk: be prepared to be run in a bare repository >>> >>> Sorry for bumping this thread but what's the integration status of the patch? >>> The issue still seems to be present in v2.26.0.windows.1. >> Junio just recently pulled commits into git.git from Paul's gitk >> repository which contain this fix, and it looks like it will make it >> into the Git 2.29.0 release. >> >
diff --git a/gitk b/gitk index abe4805ade..1483bf5ed5 100755 --- a/gitk +++ b/gitk @@ -12599,7 +12599,7 @@ set cdup {} if {[expr {[exec git rev-parse --is-inside-work-tree] == "true"}]} { set cdup [exec git rev-parse --show-cdup] } -set worktree [exec git rev-parse --show-toplevel] +set worktree [gitworktree] setcoords makewindow catch {