Mercurial Case折叠问题

时间:2011-08-25 15:34:46

标签: svn version-control mercurial tortoisehg

这不是过去没有出现的独特问题,但是这些解决方案都没有帮助过我。

我的案例 - 由Perforce(由我公司的中央SCM)团队维护的庞大存储库。现在他们改变了一些东西,所有个别团队都管理他们自己的SCM,只使用主要的perforce进行定期更新(不要问我为什么 - 我对此没有发言权)

然而我的问题 - 我们为团队的项目转移到Mercurial。

它的巨大 - 大约300k文件和跨平台可编译。

我设置的mercurial repo适用于Linux,但在Windows上我得到了案例折叠错误,无法检出或克隆回购。

我尝试了https://www.mercurial-scm.org/wiki/CaseFolding

的解决方案

,结果如下所示

  1. hgfold扩展 - 不起作用 - 它抛出一些未知的python异常,有人遇到这个问题,扩展的维护者知道它但没有立即修复。

  2. 不可能简单地重命名文件,我们的repo会破坏,我必须使用相同的文件名,并且在linux中它工作得很好并且正在使用。所以我不知道重命名是否是一种选择。

  3. Perforce处理得很好,但正如我所说,我在这里没有发言权。

  4. 那么还有其他方法吗? SVN可以很好地处理案例折叠吗?任何帮助对我都很有用。

1 个答案:

答案 0 :(得分:2)

Mercurial书籍章节Case sensitivity

中有一章
  

找到附近的Linux或Unix盒子,克隆问题库   在它上面,并使用Mercurial的hg rename命令来更改名称   任何违规的文件或目录,以便它们不再导致   案件折叠冲突。提交此更改,hg pull或hg推送它   跨越Windows或MacOS系统,hg更新到修订版   没有冲突的名字。

问题是没有真正有效的自动解决案件冲突的方法。文件名通常在Makefile等其他文件中引用,或者在源代码中包含语句或配置文件读取。因此,任何自动解决此问题的方法都容易破坏。

从以上章节的评论中得到一些提示:

  

Grant Baillie 2009-08-13在Mac上,你也可以对你进行修复   计算机通过创建包含区分大小写的磁盘映像   文件系统。启动磁盘工具(在/ Applications / Utilities中),单击   档案 - >新 - >空白磁盘映像...,然后选择“Mac OS Extended   (Journaled,区分大小写)“作为卷格式。

你可以使用

find . -print | sort -f | uniq -di 

在区分大小写的文件系统上查找在大小写上发生冲突的所有文件名。