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