我在一家为各种客户进行大量定制开发的公司工作。有些项目是独特的,但其中许多项目也使用我们多年来开发的一组通用代码。这种模式长期以来一直运作良好。但我们目前正在从 SVN 迁移到 Mercurial (hg),因此我正在考虑如何最好地设置不同的存储库。
现在我们有一个用于内部工作的存储库。这些项目范围从基本实用程序(例如日志记录)到供内部使用的自定义应用程序。而且它还有大量未主动更新的旧代码,但会保留下来,以防某些旧的遗留客户端代码需要修改。
对于每个客户,我们都会创建一个单独的存储库,并将其所有代码放入专用存储库中。
这种结构的好处是,如果您想处理客户的代码,您只需从他们的存储库中获取所有内容,加上“核心”内部代码,您就拥有了所需的一切。一个缺点是客户端代码可能会变得陈旧,甚至与我们的核心代码的更改不同步。
但我也想听听其他人是怎么做的。拥有许多特定于客户的存储库和一个相当大的内部存储库是否有意义?一些客户的代码库巨大,而另一些客户的代码库非常小。为每个人都有一个回购有意义吗?
另外 - 我们将所有客户端工件放入每个客户端存储库中。这不仅包括源代码,还包括规格、合同、签名的 PDF、Excel、Visio、Word 和其他此类文档。这对我来说似乎很浪费,我正在考虑将工件与真实代码分开。其他人如何处理此类事情?
您可以执行以下操作:
- 将核心代码放在一个中央存储库中
- 将客户端代码放入特定于客户端的存储库中
- do not将核心代码的副本直接放入客户端存储库中,而不是将核心代码存储库作为子存储库 http://mercurial.selenic.com/wiki/Subrepository
这给您带来的好处是您仍然可以提取客户端存储库并获取客户端的内容and核心代码。
另外,子存储库会自动指向核心代码存储库的某个版本,如果您想要更新的版本,则必须进行显式更新。因此,如果核心代码存储库同时更新,则客户端存储库中的子存储库也会更新not自动获取这些更改(这可能会破坏您的客户端代码)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)