0

在我们公司,我们构建了一个数据集成工具,并已出售给多个客户。大多数客户都有不同的要求。我们通过使用基于继承的自制机制实现了这些客户特定的扩展(因此每个安装都知道要加载哪些类,哪些不加载)。但是所有这些客户特定的代码仍然与标准代码在同一个代码库中。

现在,这不再可能有几个原因(代码库变得丑陋和庞大,需求冲突等)

出于这个原因,我们决定将代码库分开:一个用于标准产品,几个用于客户特定的代码库。

我现在正试图找到一个支持这种方法的版本控制系统。这是我的愿望清单:

  • 支持不同版本的多个“标准”代码库
    • 1.0 版本
    • 1.1 发布
    • 2.0 测试版/开发
  • 支持多个“客户”代码库
  • 通过克隆标准代码库创建客户代码库的能力
  • 更改客户代码库中标准代码的能力
  • 能够使用新的标准版本更新客户代码库(并以某种方式标记来自客户代码库中更改的标准代码的冲突)

由于我们的团队还很小(约 4 名程序员),开发人员自己也应该很容易处理。

顺便说一句,我们的软件是使用带有STS的Spring构建的(因此,Eclipse 插件也会很棒)。

到目前为止,我研究过的所有 VCS 似乎都有构建一个软件的目标——而不是几个。我希望有一些建议或最佳实践方法。

4

1 回答 1

0

简单地

只需获取 git,执行拉取请求流程并利用一些 GUI 来支持此工作流程。

发布与定制开发有很大不同吗?

澄清一下,您面临的情况是什么:“标准”开发来自版本,它们可能独立维护以进行维护,您可能需要从新版本中获得一些修复以合并到旧版本中,您需要一种解决修补程序的方法.

所有这些事情都可以通过 git、hg 等分布式版本控制系统得到很好的解决。我从 hg 开始,但后来发现,git 被更频繁地使用,并且在标准安装中提供了所有需要的东西(对于某些 hg 功能而言,情况并非如此)。

关于定制开发——事实上,它们在概念上与标准版本没有太大区别——你只需要对你的程序进行另一个修改,以唯一的名称标识,这最终将表示,这些是定制的东西。

分支或拉取请求过程?

现在如何为不同的版本和定制开发处理不同的“泳道”?

分支工作流模型

明显的答案是“分支”。有很多关于各种分支模型的教程,它们将解决您的问题。

然而,分支也不是微不足道的,你可能会发现关于哪种风格最好的争论很长时间。

主题回购和拉取请求工作流程

幸运的是,还有更简单的解决方案 - Pieter Hintjens 文章http://hintjens.com/blog:24关于“被认为有害的分支”提供了更简单的模型,使用主题存储库和拉取请求过程。这就是管理 GitHub 和 BitBucket 上的项目的数量,我发现这确实是风险最小的最有效的解决方案。

最终建议

对于拉取请求的工作过程,有一些支持相关通信的 GUI 是很方便的——除了 GitHub 和 BitBucket 之外,市场上有一些解决方案(包括一些开源解决方案)。

为长期做好准备 - 从 Pieter Hintjens 的链接文章开始可能会使您的运行时间更短,下一步可能是在 BitBucket 上玩一个项目左右,然后设计“最终”系统(无论如何都会随着时间的推移而发展,但是git repos 非常适合与更改保持一致)。

于 2013-10-10T12:32:58.960 回答