MiK*_*iKL 5 macos mercurial kiln
我使用Mercurial作为源代码控制,在KILN上管理主存储库.在某个时间点,我将iOS项目名称从WeatherTimeMachine更改为weathertimemachine.这导致了几个文件和文件夹的大小写更改:
与此同时,我在KILN的修订版中添加了一个标签...所以我现在有:
尝试合并时,我收到以下错误消息:"Mercurial case-folding collision"
我怎样才能解决这个问题?
我在这里找到了一些信息: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.
小智 5
如果您使用的是 Mac OS X,则无需按照 Mercurial 文档的建议将存储库导出到 Linux 或其他区分大小写的外国文件系统。只需使用磁盘工具创建一个区分大小写的日志磁盘映像,比您的存储库稍大,将您的存储库复制到那里,然后删除冲突的文件并提交。
这是一个无需编程的答案,但它一劳永逸地解决了我反复无常的案例折叠问题!无论如何现在..
我放弃了避免和“修复”案例碰撞问题的尝试。这看起来很丑陋,你永远无法真正“解决”问题,只能采取解决方法。
真正解决问题的唯一方法(我能想到的)是使用区分大小写的文件系统。无需重新格式化整个磁盘,单个分区即可很好地完成这项工作。
我使用了操作系统附带的磁盘工具应用程序,非常简单,只需记住Mac OS Extended (Case-sensitive, Journaled)
在创建新分区时选择即可。另请注意,磁盘工具只能通过移动分区的末尾(而不是开头)来调整分区大小。
您可以创建一个指向旧源代码所在位置的符号链接,因此无需更改 IDE 设置和其他内容(但我还没有尝试过这一点,只是对新分区感到满意)。
归档时间: |
|
查看次数: |
6731 次 |
最近记录: |