Karthik Nayak <karthik....@gmail.com> writes:

> * We perform quoting on each layer of nested alignment. 

I do not understand why.

For example, using the tip of karthik/exp on GitHub (on top of this
series, d91419b (ref-filter: adopt get_head_description() from branch.c,
2015-08-23)):

git for-each-ref --shell \
  --format 'x=%(if)foo%(then)%(align:10)XXX%(end)%(else) not foo %(end)'

I'd expect an output like:

x='XXX      '

and instead I get:

x=''\''XXX       '\'''

which assigns the value 'XXX       ' (including the quotes) to $x. I do
not see a use-case for this (well, I could imagine one where we would
later call eval "$x", that seems rather far-fetched).

I think the quoting should be:

1) When the stack contains only the initial element, quote individual
   atoms.

2) When the stack contains exactly two elements and encountering a %(end)
   or %(else), quote the entire strbuf of the 2nd level when appending to
   the 1st level.

3) When the stack contains more than two elements, perform no quoting at
   all. The quoting will be done later by #2.

I found a segfault while testing:

$ git for-each-ref --format 
'x=%(if)%(align:10)%(end)%(then)%(align:10)XXX%(end)%(else)%(end)' --shell
zsh: segmentation fault

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to