monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] case insensitive file names


From: Stephen Leake
Subject: [Monotone-devel] case insensitive file names
Date: Wed, 18 Jun 2008 03:46:25 -0400
User-agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.2 (windows-nt)

I just ran into a case insensitive file name problem. I'm on
Windows, and I added a file named "GDS_Executor.page" in a main
branch, renamed it to "gds_executor.page" in another branch,
then merged the branches.

mtn did not complain during the merge, but it did complain during the
update;

mtn: misuse: rename target 'gds_executor.page' already exists

But then if I delete 'gds_executor.page' from the workspace (but not
from mtn), update fails with:

mtn: warning: missing file 'GDS_Executor.page'

There are a couple of issues here.

First, mtn should use a case-insensitive file name compare. More
precisely, it should use whatever file name compare the actual file
system uses; that may be a case-sensitive NFS on Windows, for example.
That would require a standard API for checking file name equality; is
there such a thing? Trying to actually create two files and seeing if
an error results would work, but probably be too slow.

As an approximation, we could lowercase all file names on Windows
before doing string equal. That's probably not right if the filenames
are actually UTF8 encoded. Is there an appropriate 'lowercase' function?

Second, why does 'update' care if some files are missing? They will be
restored or not as appropriate by the update anyway. In the current
use case, this check just gets in the way. I'll start another thread
for that.

-- 
-- Stephe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]