我在一家为各种客户进行大量定制开发的公司工作。有些项目是独一无二的,但其中许多项目也使用我们多年来开发的一套通用代码。这种模式长期以来运行良好。但是我们目前正在从SVN转向Mercurial(hg),所以我正在思考如何设置不同的存储库。代码库最佳实践
现在我们有一个回购我们的内部工作。这些项目的范围从日志等基本实用程序到内部使用的自定义应用程序。而且它还有很多旧代码没有被主动更新,但随时可以保留一些旧的旧代码需要修改。
对于每个客户,我们制作一个单独的回购,并将其所有代码放入专用回购。 关于这个结构的好处是,如果你想处理客户端的代码,你只需从他们的回购中获得一切,再加上“核心”内部代码,并且你拥有了你所需要的一切。一个缺点是客户端代码可能变得陈旧,甚至与我们核心代码的变化不同步。
但我想听听其他人的做法。有许多客户特定的存储库和一个相当大的内部存储库是否有意义?一些客户的代码量很大,而其他客户的代码量非常小。是否有意义为每个回购?
此外 - 我们把所有客户端工件放入每个客户端存储库。这不仅包括源代码,还包括规范,合同,签名的PDF,Excel,Visio,Word和其他文档。这对我来说似乎很浪费,而且我正在思考从真实代码中分离出工件。别人如何处理这些事情?
不错! subrepository似乎是要走的路。如果我的核心回购有10个不同的项目,我是否可以将我的客户代码使用的项目作为子库存储? – 2011-12-27 22:50:22
不要将多个项目放入一个回购。我只是意味着你建立了它们之间根本不存在的依赖关系。例如,要回答您的问题,如果他们在同一个存储库中,则必须包含所有这些问题。10个回购中有10个不同的核心项目会更好。它便宜又容易,而且没有真正的理由不这样做。 – 2011-12-29 04:57:02
如果可能,而不是子库,收集来自artifactory的依赖关系并将它们合并到您的构建中(使用例如Maven或Ivy)。子库存在一大堆概念问题,很少是最好的解决方案。 – 2012-01-02 17:32:22