我最近从 Subversion 切换到 Mercurial 以进行源代码控制,并且这样做将一个存储库拆分为多个存储库。我使用 subrepos 来管理存储库之间的依赖关系。问题是 pull 不是 suprepo 感知的,所以我必须进入每个 subrepo 并拉取更改才能更新存储库。有一个更好的方法吗?
1 回答
拉动是不知道的
hg pull应该是 subrepo 感知的,只要它与-u
( --update
) 选项一起使用。
当涉及到 subreposhg update
时,应该将它们考虑在内:
每当更新的 Mercurial 版本
.hgsubstate
在更新您的工作目录时遇到此文件时,它们将尝试提取指定的子存储库并将它们更新到适当的状态。Subrepos 也可能包含他们自己的 subrepos,Mercurial 将根据需要递归。
OP CoreyD补充说:
这对我不起作用。
我创建了两个 repos/repo
并将/sub
sub 克隆到 repo (/repo/sub
) 中。然后我用这样的一行
创建一个.hgsub
文件并提交它。 当我进行更改然后进行更新时,是不变的。 难道我做错了什么?/repo
sub = ../sub
/sub
/repo /repo/sub
看起来是对的:
SubRepos 或子模块(对于 Git)都是关于引用精确配置(hg 的变更集引用,或 Git 的提交引用,如这个SO 问题中所述)
当您更改之外的任何内容时/repo
,您不会在记录确切配置(变更集参考)中更改.hgsubstate
文件。
因此根本没有变化。 /repo
您可以/sub
直接在 中进行更改/repo/sub
,提交它们,然后提交/repo
。
然后, 的克隆/repo
将具有新配置。