我的存储库中有一个文件夹。然后我将此文件夹设为子库(具有相同的文件),提交并推送此更改。现在我无法通过该提交更新回来。这是我得到的信息:
% hg update --repository <path to repo> --config ui.merge=internal:fail --rev 1159 --clean
abort: path 'subrepo\include\header.h' is inside nested repo 'subrepo'
[command returned code 255 Wed Dec 05 11:57:45 2012]
其中subrepo
是subrepo现在所在的文件夹的名称。
有没有办法打败这个并更新到早期版本?
答案 0 :(得分:5)
经过一段谷歌搜索后,这看起来与Caveat 3直接相关,引用“更新/合并当前无法完全删除子存储库,因为这可能会丢失仅限本地的更改”。还要注意5个状态“正常文件和子目录之间的冲突未得到处理”。
有趣的是,以及我以前从未见过的东西,子存储库被认为是“feature of last resort”,也就是说,如果你可以提供帮助,你应该尽量不要使用它。
可能不是你想要的答案。
解决方法是通过克隆来获取修订版...您可以在创建子版本之前使用基于修订版的新克隆:
% hg clone --repository <path to repo> new_copy --rev 1159
这将克隆到目前为止的所有内容,因此您将失去任何“未来历史”,但至少能够恢复到早期版本。
答案 1 :(得分:5)
找到“解决方案”:删除有问题的文件夹,然后使用“discard changes”选项进行更新。像魅力一样工作。