Mercurial公共/本地文件

时间:2011-10-08 11:27:30

标签: mercurial mercurial-subrepos

我从几年前就是一名hg用户,我对此感到高兴!

我必须像以前从未做过的那样开始一个项目。 我们的想法是开发一个具有批处理模式和GUI的软件。

因此,批处理和GUI模式都会有共同的来源,但每个都会包含特定的来源。 而且,基本上,我希望我的同事能够克隆GUI版本,并在其上进行提交更改。 然后,我希望能够将他们对公共文件的更改与批处理版本合并。

我该如何处理?

由于我一直在阅读这个主题,我真的很感激任何帮助!!

谢谢。 binoua

1 个答案:

答案 0 :(得分:2)

作为subrepos的创建者,我强烈建议反对使用subrepos。

虽然subrepos可用于将较大的项目拆分为较小的部分,但是这种情况往往超过了subrepos所涉及的额外复杂性和脆弱性。除非您的项目真的大,否则您应该只为了简单而坚持使用一个项目仓库。

那么什么是subrepos呢? Subrepos最适合管理其他独立项目的集合。例如,假设您正在构建一个包含现有SCM的大型GUI工具。我建议你把它结构如下:

scm-gui-build/ <- master build repo with subrepos:
  scm-gui/     <- independent repo for all the code in your GUI tool
  scm/         <- repo for the third-party SCM itself
  gui-toolkit/ <- a third-party GUI toolkit you depend on
  extensions/  <- some third-party extension to bundle
    extension-foo/  

在这里,您可以使用普通旧仓库(scm-gui)完成所有工作,但可以使用更高级别的主仓库来管理建筑/包装/版本控制/标记/发布整个集合。主scm-gui-build仓库只是围绕其他正常仓库的薄包装,这意味着如果某些东西中断(就像其中一个仓库的网站脱机),您可以毫无问题地继续在您的项目中工作。

(另见:https://www.mercurial-scm.org/wiki/Subrepository#Recommendations