寻找支持标准开发和客户特定开发的版本控制系统

时间:2013-10-10 12:09:55

标签: version-control

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

现在,由于以下几个原因(代码库变得丑陋和大,冲突的要求等)不再可能。

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

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

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

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

顺便说一下,我们的软件是使用SpringSTS构建的(因此,Eclipse插件也很棒)。

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

1 个答案:

答案 0 :(得分: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非常适合保持变化)。