2013-12-13 57 views
16

我正在从一个Windows家伙继承的项目工作。它受Hg版本控制。它有一些不一致的文件名约定,我试图解决这个问题,所以我将一个名为jquery.fullpage.js的文件重命名为jquery.fullPage.js(只是大写的“P”),以坚持该jQuery库的原始作者。Mercurial忽略文件重命名(更改大小写)

但是,Hg不检测作为重命名或甚至删除/创建文件的小写字母大写更改。因此,我无法承诺改变并推动它的发展。它在本地工作,但在我推送的远程登台服务器上,它会产生404错误。显然,远程文件没有重新命名为大写P.我知道我可以通过删除文件,提交,恢复文件和重命名,再次提交来解决这个问题,但似乎是一种粗暴的方式修复它。

我该如何解决这个问题?

回答

20

这是一个案例折叠问题。尝试通过Mercurial重命名该文件:hg rename jquery.fullpage.js jquery.fullPage.js

+0

这工作。我对这个解决方案并不满意。虽然我已经阅读了更多有关案例折叠问题的内容,但它似乎是不区分大小写的文件系统的问题。 – dashmug

+0

我用'mv',但它仍然没有导致我运行'pull -uv'的系统重命名它。噢,我正在尝试重命名[由其他答案](https://stackoverflow.com/a/28111220/429091)解决的文件夹/目录。 – binki

0

如果你使用的是OS X并且你使用的是HFS,但是不区分大小写,那么Hg(也就是我发现的Git)将会接受这个改变。我使用Linux和我的同事使用OS X,并且我们与Git有类似的问题。进行中间重命名是一种解决方法,或者按照您的建议使用中间删除。

我相信Jakub建议使用hg本身来实现重命名,但是我没有尝试过,因为我没有安装hg。

+0

的确,我在OSX上。它没有检测到变化。远程登台服务器在Linux上,因此登台服务器可以正常工作。 – dashmug

14

如果您正在重命名一个文件,您可以按照前面提到的hg rename进行更名。

但是(至少在的Windows),如果你是一个重命名文件夹然后你不能直接对其进行重命名。常用的解决方法是使用中间值:

hg rename Foo tmp 
hg rename tmp foo 

另一个解决方法是使用中间删除。但是这是阻止,因为你会失去文件的历史。

+1

我需要在这两个重命名之间进行提交吗? – binki