类似,但 hg 文档不鼓励回答:Can I emulate svn:externals using mercurial?
在使用 hg 之前,我使用的是 Subversion。看起来 Subversion 中的外部功能非常强大:我可以拥有指向另一个存储库的特定版本的子存储库。但是 Subrepository 的文档在 Hg 中,它是“最后手段的功能”。哇,这太不祥了。另外,我在文档中没有看到任何有关将该子存储库粘贴到特定版本的内容。
不再维护 Deps 扩展。
该网站不鼓励森林扩展。
因此,如果我希望将存储库的 XYZAB 版本嵌套在我的 Hg 存储库中,那么现在除了“最后手段”功能之外的最佳替代方案是什么? Hg 在这个功能上有点糟糕吗?
Guestrepo 值得一看,但目前还很新:https://bitbucket.org/selinc/guestrepo
最佳答案
But the docs for Subrepository in Hg say it is a 'Feature of Last Resort'. Wow that's ominous.
这意味着您应该仔细检查您是否确实需要子存储库。有许多非常大的项目使用 Mercurial 而不使用子存储库。相反,他们将代码作为松散耦合存储库的集合来管理 - 子存储库的主要问题是它们创建了 very tight coupling在软件设计中通常会避免紧密耦合的组件,因为它们限制了您的灵 active 。
但是,对子存储库的支持不会消失,事实上,随着人们向我们提供良好的用例,它会随着时间的推移而逐渐改善。
Plus I don't see anything in the docs about sticking that subrepo to a specific version.
奇怪,因为子存储库都是关于检查特定版本的。也就是说,您只能 checkout 与您提交的完全相同的版本。当您提交时,版本会写入 .hgsubstate
,并且 hg update
将在 checkout 时查阅该文件。
请参阅Mercurial Kick Start guide和 hg help subrepos
有关如何处理 .hgsubstate
文件的信息。
关于version-control - hg 外部 repo 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188500/