[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: BUG: when performing a checkout use the cased url as in the download URL

From: Stefan Sperling <stsp_at_elego.de>
Date: Thu, 22 Jul 2010 11:55:15 +0200

On Thu, Jul 22, 2010 at 05:10:01PM +1000, dave b wrote:
> Perhaps if it is possible, svn on windows can use the posix api? - I
> don't know how that works :)

It doesn't work quite like that. Subversion uses APR (the apache
portable runtime) for portability. This means that file i/o, memory
handling, network access etc. is abstracted by APR. This means that,
to Subversion, every operating system looks the same. It also means
that Subversion can run on any platform supported by APR.

Now, we make exceptions to this in certain places, and call win32 APIs
directly. But to the best of my knowledge we only do so to work around
severe problems. For instance, we try to work around "access denied"
errors that happen when other applications have a file open which Subversion
wants to rename or delete -- another "feature" of Windows that would
otherwise cause Subversion to error out whenever the virus scanner
opens a working copy.

> The microsoft article linked a few mails back by Bob Archer states
> that using the posix api it is possible to have cased file-names and
> access.

It's likely that other applications that work with Subversion
on Windows would get confused if we did this. Other applications won't
be prepared to handle the files Subversion creates like this.

For instance, many Windows users run Subversion inside of Eclipse.
Eclipse will most likely not be prepared to handle these files after
Subversion creates them. And what about build systems people use?
And merge tools? And helper scripts?

Like windows application developers, most windows users also have
gotten used to the limitation and would not expect Subversion to treat
filenames differently than all the other applications on their system.
A hopefully unnecessary reminder is that most software people use on
Windows is proprietary which means they are relying on commercial
vendors to address issues like interoperability with Subversion.
So there is a lot of software that people cannot change to work with
case-sensitive filenames even if they wanted to. So what's the point
of Subversion doing it? It will be the odd one out, so most people would
rather live with case-insensitive filenames for reason of interoperability.

Also, it's not just a matter of adding code to Subversion.
Apparently the user has to install an optional component and make
a concious choice during installation of that component to make the
API work case-sensitively. That's another two big hurdles right there.

http://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem says:
   "Starting with Windows XP, the POSIX subsystem is not included as part
    of standard Windows distributions and has been replaced by Interix.[2]"

Following the Interix link, we find:
http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX#cite_note-6
-> http://technet.microsoft.com/en-us/library/bb496994.aspx
  "Case-sensitivity of the directory and file names is an optional choice
   and can be selected by the user during the installation of Windows
   Services for UNIX 3.5."

So we'd also need to write detailed documentation telling people how
they can enable the new and shiny case-sensitive filenames with Subversion
on Windows, and then manage complaints about where things fail to work as
expected and document all the corner-cases (especially regarding interaction
with other applications).

So, sorry, but this is just not worth supporting. It's more trouble
than it is worth.

Stefan
Received on 2010-07-22 11:56:49 CEST

This is an archived mail posted to the Subversion Dev mailing list.