当 commit/push 从 Mercurial 中的子仓库创建时如何修复主仓库
How to fix the main repo when a commit/push has been made from a subrepo in Mercurial
所以我有一个主要的 Mercurial 仓库,由 3 个子仓库组成。
通常我理解的 commit/push 的正确方法如下:
hg commit -Sm 'Fixed a bug' # This commit was done from the main repo
hg push
我犯了一个错误 commit/push 来自其中一个子回购协议:
hg commit -m 'Fixed a bug' # This commit was done from a sub-repo
hg push
现在,将 pull/update 主仓库的另一个编码器将看不到我在子仓库中的更改。
什么是正确的 Mercurial 解决方法?
手动修改主仓库中的 .hgsubstate 文件并commit/push编辑它?
如果是这样,我知道 ID 的第一部分是最后一个子回购变更集的提示,但是 ID 的其余部分呢?它是如何产生的?
或
等待下一个 commit/push 以便使用最新的变更集修复 .hgsubstate 文件?
或
提交并推送虚拟变更集?
或
其他...
我不知道我是否正确理解了你的问题,但对我来说,正确的方法似乎是进入子仓库进行拉取和更新,然后走出主仓库并做 commit/push.
见https://www.mercurial-scm.org/wiki/Subrepository#Synchronizing_in_subrepositories
所以我有一个主要的 Mercurial 仓库,由 3 个子仓库组成。
通常我理解的 commit/push 的正确方法如下:
hg commit -Sm 'Fixed a bug' # This commit was done from the main repo
hg push
我犯了一个错误 commit/push 来自其中一个子回购协议:
hg commit -m 'Fixed a bug' # This commit was done from a sub-repo
hg push
现在,将 pull/update 主仓库的另一个编码器将看不到我在子仓库中的更改。
什么是正确的 Mercurial 解决方法?
手动修改主仓库中的 .hgsubstate 文件并commit/push编辑它?
如果是这样,我知道 ID 的第一部分是最后一个子回购变更集的提示,但是 ID 的其余部分呢?它是如何产生的?
或
等待下一个 commit/push 以便使用最新的变更集修复 .hgsubstate 文件?
或
提交并推送虚拟变更集?
或
其他...
我不知道我是否正确理解了你的问题,但对我来说,正确的方法似乎是进入子仓库进行拉取和更新,然后走出主仓库并做 commit/push.
见https://www.mercurial-scm.org/wiki/Subrepository#Synchronizing_in_subrepositories