version-control - hg 外部 repo 的最佳实践是什么?

标签 version-control mercurial

类似,但 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 guidehg help subrepos有关如何处理 .hgsubstate 文件的信息。

关于version-control - hg 外部 repo 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188500/

相关文章:

svn - 哪个 SCM 可以轻松处理 90,000 个文件

powershell - 如何获取 TFS 本地工作区中的项目计数?

windows - 通过 ssh 从 cygwin 托管的存储库克隆到 Mac 和 FreeBSD 客户端时为 "(.hg not found)"

mercurial - 获取 Mercurial 下一次提交哈希

mercurial - 是否可以撤消 Mercurial 净化?

git -- 处理卡住的内容

svn - 从 Mercurial 迁移到 Subversion

git - 切换到 hg-flow 模型 : how to rebase commits and branches

windows - 存档 Mercurial 变更集文件

git - 如何在没有 --set-upstream 的情况下推送远程服务器上不存在的新分支?