Mercurial: Problem with non-ascii letters in filenames between Windows and Linux
I have a central Hg repository on a samba server, and two working copies, one on a Ubuntu and one on a Windows 7 machine. Everything worked fine until I, by mistake, added to the project a file with a Russian letter in the name. I've done it in Linux. Mercurial ha开发者_高级运维s happily accepted it and in Linux everything still works. However I've discovered that I cannot pull changesets to Windows any longer. For hg pull
I get
pulling from ...
searching for changes
adding changesets
transaction abort!
rollback completed
abort: empty or missing revlog for figures/interfDðÁsign.svg
(The problematc filename should be interfDеsign, with Cyrillic 'е' in it.) I've renamed the file in Linux, committed and pushed the change, and can even see this change if I do hg in
in Windows. But I cannot pull it! Is there any way to correct this problem and make the repository work with Windows again?
Read this... http://groups.google.com/group/mercurial_general/browse_thread/thread/300a3f5e1a23592e There are no good news :-)
BUT
there could be a fix: try this https://www.mercurial-scm.org/wiki/FixUtf8Extension
I've found another solution, or rather a work around. With the Convert extension, it is possible to rename the poorly named file, i.e. to correct the mistake done long ago. In this particular case it worked fine. Of course, one should be careful that there are no dependencies on the badly named file in the project, and also some commit messages may get meaningless.
The advantage of this method is that other people don't have to install a non-standard extension for the mere sake of being able to check out an old changeset with a very wrong file name.
精彩评论