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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pratyus,
On 08/10/2019 01:00, Pratyush Yadav wrote:
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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux