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