Alan Barrett wrote on Wed, Apr 24, 2013 at 09:44:11 +0200:
> On Tue, 23 Apr 2013, Gabriela Gibson wrote:
>>> Also, a minor design nit (sorry, no code review): The "---f1"  
>>> construct is something I've never seen before.
>>
>> That's why I picked it --- I checked extensively, and no-one uses a 
>> triple dash, so it does exactly what we hope it will: never interfere 
>> with anything that people might do. Also, I think it looks quite 
>> 'unixy' and it's easy to read.  I expect fewer problems on windows.
>
> Speaking as somebody who might use this feature, I would much prefer a 
> more familiar notation like "%(f1)".  To my eyes, "---f1" does not look 
> unixy or easy to read; familiar constructs are easier to read than 
> unfamiliar constructs.
>
> In addition to the familiarity issue, there's an issue with escapes: you 
> need a way of representing a literal "---f1" sequence that does not 
> expand to anything.  With notation like "%(f1)" there's already a 
> widespread convention of using "%%" to represent a "%" character that 
> does not introduce an expnsion.

True.  However, both cmd.exe and the Subversion config file parser use
'%' as a metacharacter, and each of them escapes it differently, so the
way to generate a single, literal '%' character would be:

%%%%    in ~/.subversion/config;
%%      in the value of --config-option=... on unix;
^%^%    in the value of --config-option=... on windows;
%       not guaranteed to, but works in practice when not followed by either 
/[(]/ or /\w+[%]/.

That's going to be challenging to document clearly.

What about $(f1)?  That's also familiar (makefile syntax) but might be
a little saner to escape in various contexts.

Daniel

P.S.  It appears our config files' %-interpolation feature doesn't kick
in for --config-option's argument.  I'm not sure whether that's a good
thing or not.

Reply via email to