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

[RFC] Case-only renames on Windows - how to proceed?

From: Johan Corveleyn <jcorvel_at_gmail.com>
Date: Tue, 3 May 2011 23:41:07 +0200

Hi all,

After the discussions in [1] and [2], I'd like to know if and how to
proceed with making case-only renames work on Windows (or
case-insensitive filesystems in general). Following my attempted patch
([1]), I got some good feedback from brane and danielsh, but I'd like
some more opinions, ideally reach some sort of consensus.

Summarized, the situation is this: with the patch in [1] I can perform
a case-only rename on Windows, but it's difficult to commit that
rename directly (meaning "a commit addressing the moved targets
directly"), because of issue #3865 [3]. This difficulty to address the
scheduled-for-delete part of the rename is actually already there
without the case-only-rename patch.

I see a couple of ways to proceed:

(1) Just punt on the entire issue, and leave it for 1.8 or later. Note
that issue #3865 still causes grief because it prevents the command
line client from directly committing a two-step-case-only-rename (svn
mv A A2; svn mv A2 a), which is possible as of wc-ng.

(2.a) Commit patch [1] (or an evolution thereof), making
case-only-renames possible in one step. They are still not directly
committable with the CLI because of issue #3865. But at least they can
be committed with a recursive commit on the parent, or directly via a
client other than the command line client (depends on that other
client of course).

(2.b) Commit patch [1] and fix issue #3865 with some special-case fix
for "commit", as suggested by brane: when committing an Add from the
CLI, check if there isn't also a corresponding scheduled-for-delete
file with the same truepath, "hidden from view" - if so commit it
also.

(2.c) Commit patch [1] and fix issue #3865 by introducing a new
command line option '--literal-path', as suggested by danielsh, which
makes it possible to address the scheduled-for-delete part of the
rename.

(2.d) Commit patch [1] and fix issue #3865 with a more general change
of the truepath dance. I.e. do truepath canonicalization of
path-targets only after first checking if those targets aren't
actually matching (exactly) a path in the wc metadata. I don't know if
this is at all possible/viable ...

Thoughts?

[1] http://svn.haxx.se/dev/archive-2011-04/0277.shtml
[2] http://svn.haxx.se/dev/archive-2011-04/0232.shtml
[3] http://subversion.tigris.org/issues/show_bug.cgi?id=3865 ('svn' on
Windows cannot address scheduled-for-delete file, if another file
differing only in case is present on disk)

-- 
Johan
Received on 2011-05-03 23:41:55 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.