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.
--
Regards,
Pratyush Yadav