如何将更改传播到Mercurial中的所有子库?

时间:2010-04-16 16:25:35

标签: mercurial subrepos

我最近从Subversion切换到Mercurial进行源代码控制,并且这样做会将一个存储库分成几个。我使用subrepos来管理存储库之间的依赖关系。问题是pull不是suprepo意识所以我必须进入每个subrepo并提取更改以更新存储库。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

  

拉不是绝对意识

只有在-u--update)选项中使用时,

hg pull才能获得subrepo。

hg update应该在comes to subrepos时将其考虑在内:

  

每当更新的Mercurial版本在更新工作目录时遇到此.hgsubstate文件,他们都会尝试拉出指定的子版本并将其更新为适当的状态。

     

Subrepos也可能包含自己的子目录,Mercurial会根据需要递归。


OP CoreyD添加:

  

这对我没有用。
  我创建了两个repos /repo/sub,然后将sub克隆到repo(/repo/sub)。
  然后我在.hgsub中创建一个/repo文件,其中包含此行sub = ../sub并提交它。
  当我对/sub进行更改,然后/repo /repo/sub中的更新未更改时   我做错了吗?

看起来是对的:
SubRepos或子模块(对于Git)都是关于引用精确配置(变更集参考为hg,或者为Git提交参考,如本SO question中所述)

当您更改/repo 之外的任何内容时,您不会更改 .hgsubstate中的/repo文件配置(变更集参考) 因此根本没有变化。

您可以直接在/sub中进行/repo/sub更改,提交,然后提交/repo然后/repo的克隆将具有新配置。