git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Git Gui: Branch->create currently fails...

From
Philip Oakley <philipoakley@iee.email>
Date
Oct 12, 2019, 20:34 UTC
Message-ID
<e0b45696-7945-4b7d-62e7-bff46eb8129a@iee.email>
In-Reply-To
<20191008000003.qlulu5ie36eij4uq@yadavpratyush.com>

Hi Pratyus, On 08/10/2019 01:00, Pratyush Yadav wrote:

Show 70 quoted lines
> On 07/10/19 11:02PM, Philip Oakley wrote:
>> I'd never used the Branch:Create before (this is via mouse) and it threw an
>> error, which appears to be repeatable, so I'm reporting it at the moment so
> I'm afraid I can't reproduce it. I tested by creating a worktree of
> git.git by running:
>
>    git worktree add ../git-2
>
> Then I opened git-gui in the worktree and clicked the "Create" option
> under the "Branch" menu.
>
> The dialog opened just fine, which I assume is what your error is. But
> just to be sure, I created a branch too, and that also works pretty
> well.
>
> Same behaviour with a "normal" branch, which is not inside a worktree.
>
> So is there anything else in your setup that would cause this problem?
>
>> I don't forget ...
>> (I'm chasing down other issue at the moment ;-)
>>
>> This is with the version 0.21.GI git version 2.23.0.windows.1 Tcl/Tck 8.6.9
>>
>>
>> missing "
>> missing "
>>      while executing
>> "list "refs/heads/redo-v0" [list ""
>>      ("eval" body line 1)
>>      invoked from within
>> "eval $line"
>>      (procedure "_new" line 87)
>>      invoked from within
>> "_new $path 0 $title"
>>      (procedure "::choose_rev::new" line 2)
>>      invoked from within
>> "::choose_rev::new $w.rev [mc "Starting Revision"]"
>>      (procedure "branch_create::dialog" line 35)
>>      invoked from within
>> "branch_create::dialog"
>>      (menu invoke)
> Looking at the log, the culprit seems to be the line:
>
>    set line [eval $line]
>
> over at lib/choose_rev.tcl:159. The $line comes from reading the output
> of a call to `git for-each-ref` with '--tcl' passed in. Looking at the
> man page for 'for-each-ref', the description of the option is:
>
>    --shell, --perl, --python, --tcl
>      If given, strings that substitute %(fieldname) placeholders are
>      quoted as string literals suitable for the specified host language.
>      This is meant to produce a scriptlet that
>      can directly be `eval`ed.
>
> So this might possibly me an upstream bug.
>
> If I had to guess a fix, I'd suggest trying to wrap the $line in
> lib/choose_rev.tcl:159 in quotes like so:
>
>    set line [eval "$line"]
>
> If this doesn't fix it, see if you can find out which $line is causing
> problem by printing the variable before 'eval'ing it by adding a:
>
>    puts "$line"
>
> before the call to eval.
>

I've tried both parts and seen that this looks like some form of buffer overrun or size limit

with the mods I ran: $ git gui > branch_create.txt

which produced the 'same' error missing ", but with a slightly different fragment.

The branch_create.txt file is size 1.43 MB (1,502,103 bytes) (from the windows explorer file properties dialog..) opening in Notepad++ it's 4900 lines long with the final line trucated at col 188 (shorter than other lines). There is an empty line 4901 (CRLF)

the last two lines are: list "refs/heads/branch-patterns" [list "commit" "b2453cea29b58f2ec57f9627b2456b41568ba5da" [concat "" "Philip Oakley"] [reformat_date [concat "" "Tue May 28 20:22:09 2019 +0100"]] "squash! doc branch: provide examples for listing remote tracking branches"] [list "" "" "" [reformat_date ""] ""] list "refs/heads/MSVC-README" [list "commit" "056fb95c8e983ec07e9f5f8baa0b119bf3d13fed" [concat "" "Philip Oakley"] [reformat_date [concat "" "Sun May 19 22:33:37 2019 +0100"]] "compat/vc

the file starts with 1018 lines of refs/tags before listing the refs/remotes and finally the refs/heads.

The repo is my local Git repo with multiple remotes (git.git, G-f-W, ggg, junio, gitster, dscho, t-b, tboeg, me), so plenty of refs there!

So it does look to be specific to repos with a large number of refs/tags, refs/remotes, and refs/heads.

something for the back-burner?
Philip
Previous: Pratyush YadavNext: Pratyush Yadav
Message 4 of 10 in “Git Gui: Branch->create currently fails...”
  1. Philip OakleyOct 7, 2019
  2. Philip OakleyOct 7, 2019
  3. Pratyush YadavOct 8, 2019
  4. Philip OakleyOct 12, 2019
  5. Pratyush YadavOct 13, 2019
  6. Philip OakleyOct 14, 2019
  7. Pratyush YadavOct 14, 2019
  8. Philip OakleyOct 14, 2019
  9. Pratyush YadavOct 16, 2019
  10. Philip OakleyOct 18, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.