5

我使用 Mercurial 作为源代码控制,主存储库在 KILN 上管理。在某个时间点,我将我的 iOS 项目名称从 WeatherTimeMachine 更改为 weathertimemachine。这导致了几个文件和文件夹的大小写更改:

  • WeatherTimeMachine.xcode
  • WeatherTimeMachine_Prefix.pch
  • WeatherTimeMachine-Info.plist

与此同时,我在 KILN 的修订版中添加了一个标签......所以我现在有:

  • 窑头
  • 在我的本地存储库中进行案例更改

尝试合并时,我收到以下错误消息:“Mercurial case-folding collision”

我怎样才能解决这个问题?

4

6 回答 6

5

我在这里找到了一些信息:FixingCaseCollisions,但不知何故这对我不起作用。以下是我设法解决此问题的方法:

制作现有存储库文件夹的副本(为了安全起见)。例如:

  • cp -r WeatherTimeMachine WeatherTimeMachineCopy

愚蠢的善变认为有问题的修订是当前的提示:

  • hg debugsetparents <bad revision>
  • hg debugrebuildstate

删除导致问题的文件(强制删除需要-f)。这是一个例子:

  • hg rm -A -f WeatherTimeMachine-Info.plist

删除所有有问题的文件后,提交更改

  • hg ci -m "fixed collision-folding issue" -u michael

然后将 mercurial 恢复到正确的版本

  • hg debugsetparents tip
  • hg debugrebuildstate

在此之后,合并是可能的,问题就消失了。

现在我可以愉快地继续使用 MacHg 来管理我的 Mercurial 存储库并将我的更改集推送到 KILN。

于 2011-09-29T10:05:54.250 回答
5

If you're on Mac OS X, you don't need to export your repository to Linux or another foreign case-sensitive file system as suggested by the Mercurial documentation. Just use Disk Utility to create a case-sensitive, journaled disk image slightly bigger than your repository, copy your repo there, then remove the conflicting files and commit.

于 2012-02-15T16:31:39.967 回答
4

This is a no-programming no-hg answer, but it solved my mercurial case-folding problems once and for all! For now anyway..

I gave up trying to avoid and "fix" the case-collision problems. That just looks ugly and you can never really "solve" the problem, only can do a workaround.

真正解决问题的唯一方法(我能想到的)是拥有一个区分大小写的文件系统。无需重新格式化整个磁盘,一个分区就可以很好地完成这项工作。

我使用了操作系统自带的磁盘工具应用程序,非常简单,只记得Mac OS Extended (Case-sensitive, Journaled)在创建新分区时选择。另外,请注意,磁盘工具只能通过移动分区的末尾(而不是开头)来调整分区大小。

您可能可以创建指向旧源代码所在位置的符号链接,因此无需更改 IDE 设置和其他内容(但我没有尝试过,只是对新分区感到满意)。

于 2012-11-21T12:25:04.627 回答
2

我们通过发出 HG 重命名命令解决了这个问题,而无需使用区分大小写的文件系统。假设您遇到了麻烦,因为“Foo.txt”需要被称为“foo.txt”:

> hg rename Foo.txt Foo.txt.renamed
> hg rename Foo.txt.renamed foo.txt

当一个文件被删除然后在主存储库中重新创建时,我们遇到了这个问题,名称相同,但大小写不同。尽管已从主存储库中提取了变更集,但无法合并在这些更改之前创建的分支存储库。

于 2013-05-03T15:09:36.630 回答
0

对于 Mac OS X,对我有用的是简单地复制文件夹(重复作品 - cmd-D)并从新路径继续处理它。

于 2014-07-10T03:20:45.113 回答
0

OSX 同样,我想克隆一个 repo,但我遇到折叠错误阻止我进行顶级克隆。

如果存储库有多个提交,只需使用以下命令克隆早期版本:

hg clone -r 7

然后将任何冲突的内容添加到 .hgignore 文件并更新。

于 2017-01-23T16:34:03.213 回答