Mercurial HG案例折叠碰撞?

时间:2010-08-19 10:16:26

标签: mercurial bitbucket

  1. 首先我有一个文件名readme
  2. 然后我将其更改为README
  3. 提交
  4. 好的问题是有两个文件:readme和README

    如何删除存储库中的自述文件?

    当我更新时,我收到此错误 abort:自述文件和README之间的大小写折叠

5 个答案:

答案 0 :(得分:14)

Mercurial可以处理同一目录中的文件名,这些文件名仅在其存储库(repo顶级.hg目录)中的情况不同。在区分大小写的文件系统上(大多数在unix上),它也可以处理工作目录中的那些文件。但是,在仅仅保持大小写的系统上,操作系统不允许您在同一目录中有两个文件,这些文件只有大小写不同而且Mercurial会警告您(如您所见)。

要解决此操作系统的限制,请在区分大小写的文件系统上检出克隆,删除该文件,然后提交/推送。只要windows人员hg updating没有碰撞的修订版就可以了(因为它可以放在存储库中,而不是在他们的工作目录中)。

答案 1 :(得分:1)

这个问题是重复的,可以折叠成Resolving Mercurial Case-Folding Collision in Windows

我同意那里的评论,即使使用Cygwin,要求某人在区分大小写的文件系统中工作有点笨拙。假设有两个文件的最干净的解决方案似乎是:

  1. hg恢复到已合并的分支的负责人
  2. hg删除//然后提交等
  3. 检查文件历史记录。可能会对重命名的文件
  4. 错误地添加了一些内容
  5. 如果是,请手动将这些更改添加到

答案 2 :(得分:1)

假设您希望自述文件为自述文件。

hg mv readme foofile
hg mv foofile README

执行此操作并提交这些更改,并且repo应该可以再次使用。

答案 3 :(得分:0)

如果是重命名,那就像abc.txt那样移动到Abc.txt

以下是否有效?

拿一个补丁, 查看代码新鲜, 在它上面应用补丁。 然后提交n push

答案 4 :(得分:0)

我遇到了这个问题,当我对特定版本执行Update时发生了案例冲突。有问题的修订是专门为解决案例折叠冲突而执行的,我重命名了该文件。不幸的是,Mercurial不允许我Update进行修订。

但是,我仍然可以Update之前和之后进行修订。因此,如果您在Windows(或类似的不区分大小写的文件系统)上遇到此问题而只是Update特定修订版,您可以通过Update绕过问题修订版之前或之后。