Subject: Re: [BUG] git gui blame fails for multi-word textconv filter

From: Clément Poulain <[email-masked]>
Date: Thu, 05 Aug 2010 01:46:29 +0200

Le 04/08/2010 21:25, Kirill Smelkov a écrit :
> Hello,
>
> I use
>
>      [diff "astextplain"]
>          textconv = run-mailcap --action=cat
>
> in my ~/.gitconfig, and this works for git `git blame` because of 41a457
> in git.git (textconv: use shell to run helper), but fails with git gui:
>
>      $ git gui blame 21980.2--ИМС-МР231.doc
>      Error in startup script: couldn't execute "run-mailcap --action=cat": no such file or directory
>    
I wonder if spaces can be the reason of this. Looks like Tcl is looking 
for an executable called "run-mailcap --action=cat", and doesn't 
distinguish path from options.
I do not have much experience with Tcl, so I can't figure out how to 
solve that. Some help would be appreciate :-)
>          while executing
>      "open |[list $textconv $path] r"
>          (procedure "_load" line 56)
>          invoked from within
>      "_load $this $i_jump"
>          (procedure "blame::new" line 185)
>          invoked from within
>      "blame::new $head $path $jump_spec"
>          ("blame" arm line 6)
>          invoked from within
>      "switch -- $subcommand {
>              browser {
>                      if {$jump_spec ne {}} usage
>                      if {$head eq {}} {
>                              if {$path ne {}&&  [file isdirectory $path]} {
>                                      set head $..."
>          ("blame" arm line 57)
>          invoked from within
>      "switch -- $subcommand {
>      browser -
>      blame {
>              if {$subcommand eq "blame"} {
>                      set subcommand_args {[--line=<num>] rev? path}
>              } else {
>                      set subcommand_a..."
>          (file "/home/kirr/local/git/libexec/git-core/git-gui" line 2868)
>
>
>
> Thats is maybe because we use `git cat-file --textconv` only for in .git
> entries, but since cat-file lacks support for work-tree git-gui calls
> textconv filter itself manually on initial "$commit eq {}"?
>    
Yep, "open |[list $textconv $path] r" is the way we call textconv on the 
work-tree copy of the concerned file.
> If so, I'd better teach cat-file about worktree, instead of teaching
> git-gui about running textconv filter through shell. Just a wish...
>    
This was discussed here: [email-masked] , 
and your suggestion was considered ;-)