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