Mercurial修复案例折叠碰撞的指南是否存在问题,或者我实施解决方案的方式存在问题。
Mercurial wiki提供的解决方案如下:
hg clone -U repo repair cd repair hg debugsetparents <bad revision> hg debugrebuildstate
此时,Mercurial会认为您检查了错误的修订版 out和所有文件都丢失了(状态'!')。为了修复回购,我们 只需要这样做:
hg rm -A <file causing the collision>
现在hg st应该显示状态'R'和其他所有的麻烦文件 状态'!'中的文件。现在我们可以检查我们的修复:
hg ci -m"fix case collision"
要重新获取所有文件,我们只需再次结帐:
hg co tip
问题文件为:SomeFile.bash
和Somefile.bash
。我最初有Somefile.bash
,我希望它现在是SomeFile.bash
。还要注意,版本157很高兴,没有碰撞,但版本158是我引入碰撞的地方。存储库的负责人目前处于修订版160.
我已按如下方式实施此解决方案:
hg clone -U my-repo-url repair
cd repair
hg debugsetparent 160
hg debugrebuildstate
hg status (reveals that everything is 'missing' (!))
hg rm -A Somefile.bash (responds that SomeFile.bash has been removed, notice case change)
hg ci -m "Fixed the collision... I hope."
hg co tip
hg update -C tip
根据指南,这应该已经删除了案例折叠碰撞并将其余的遗失文件带回来,而另一个hg status
显示仍然缺少一切(!)。
编辑:通过将最后一个命令(update
)附加到现有命令,我能够恢复丢失的文件,从而解决了问题的其余部分。
注意:我必须使用<bad revision>
的最新“问题”版本来解决此问题(在我的情况下是160)。
答案 0 :(得分:1)
尝试
hg update -C tip
那应该把文件带回来。如果没有,请尝试恢复所有内容:
hg revert -r tip -a