Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 是否可以通过添加子回购点进行更新?_Mercurial_Mercurial Subrepos - Fatal编程技术网

Mercurial 是否可以通过添加子回购点进行更新?

Mercurial 是否可以通过添加子回购点进行更新?,mercurial,mercurial-subrepos,Mercurial,Mercurial Subrepos,我的存储库中有一个文件夹。然后我把这个文件夹变成了一个子存储库(包含完全相同的文件),提交并推动了这个更改。现在我无法通过提交更新回来。以下是我得到的信息: % 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' [co

我的存储库中有一个文件夹。然后我把这个文件夹变成了一个子存储库(包含完全相同的文件),提交并推动了这个更改。现在我无法通过提交更新回来。以下是我得到的信息:

% 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]
%hg update--repository--config ui.merge=internal:fail--rev 1159--clean
中止:路径“subrepo\include\header.h”位于嵌套的repo“subrepo”内
[命令返回代码255 Wed Dec 05 11:57:45 2012]
其中
subrepo
是subrepo现在所在的文件夹的名称。
有没有办法克服这个问题并更新到早期版本?

在谷歌搜索了一段时间后,这似乎与“更新/合并当前无法完全删除子存储库,因为它可能会丢失仅本地的更改”直接相关。另外,警告5声明“不处理普通文件和子repo之间的冲突”

有趣的是,我以前从未见过,子存储库被认为是一个“”,也就是说,如果你能帮助的话,你应该尽量不使用它

可能不是你想要的答案

一个解决方法是通过克隆获得修订版。。。您可以在创建子repo之前使用基于修订的新克隆:

% hg clone --repository <path to repo> new_copy --rev 1159
%hg克隆--存储库新拷贝--版本1159

这将克隆到该点之前的所有内容,因此您将丢失任何“未来历史记录”,但至少能够返回到早期版本。

找到了解决方案:删除有问题的文件夹,然后使用“放弃更改”选项进行更新。工作起来很有魅力。

我刚刚和mercurial玩了一个“游戏”,它看起来像是在您使用subrepo之前尝试进行更新,使工作目录处于“奇怪”状态。例如,之后执行
hg update-C
尝试恢复文件,但没有正确设置工作目录状态(对我来说)
hg summary
报告父级
-1:000000000000
未签出修订。我现在想这可能是一个bug报告-会播放更多…@icabod:谢谢你的时间,希望能有进一步的发现。哦,好吧。要是我知道那些警告就好了。。。谢谢。您可以将repo克隆到以前的版本,但是还没有找到在同一个repo中更新的方法。太好了!我怀疑这是可能的,但还没有找到命令。这样就可以了。找到解决方案,如果有兴趣,请参阅我的答案。但是,请注意,删除该文件夹可能会丢失在subrepo存储库中本地所做的任何更改。在您的情况下,这听起来似乎不是问题,但如果其他人这样做时没有意识到数据丢失的可能性,则可能会导致重大问题。@davidmc24:这一点很好,尽管对于任何Mercurial用户来说,未提交和推送的更改都将丢失。无论主repo状态如何,提交和推送到子存储库的更改都没有任何问题。