Subject: Re: [PATCH] Disallow '\' in ref names

From: Andreas Ericsson <[email-masked]>
Date: Fri, 08 May 2009 09:46:11 +0200

Johannes Sixt wrote:
> Andreas Ericsson schrieb:
>> Robin Rosenberg wrote:
>>> This is asking for trouble since '\' is a directory separator in
>>> Windows and thus may produce unpredictable results.
>>>
>> NAK. We allow / on unixy systems, and that's the path separator there.
>> Junio even makes extensive use of it to create per-contributor
>> namespaces for topic-branches.
>>
>> Are you guessing this might be a problem in the future, or have you
>> actually run into it?
> 
> This is not possible on Windows:
> 
> $ git update-ref refs/heads/foo\bar HEAD
> fatal: Unable to create '.git/refs/heads/foo\bar.lock': No such file or
> directory
> 
> The problem is that git doesn't create the directory .git/refs/heads/foo
> because the ref handling only mkdir()s directories that were split off
> from the ref at forward-slashes.
> 

Ok. Isn't the slash -> backslash conversion thing supposed to be done by
a macro? I seem to remember something about PATH_DELIM.

> The decision not to mangle command line arguments that are refs (on
> Windows) was intentional. (We do mangle pathspec, i.e. we convert '\' to
> '/'.) But back then I did not think about what should happen if a ref
> contains a backslash.
> 

But what about when locating directory cutoffs for mkdir() stuff?

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Register now for Nordic Meet on Nagios, June 3-4 in Stockholm
 http://nordicmeetonnagios.op5.org/

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.