在我们公司,我们已经建立了一个数据集成工具,我们已经销售给了几个客户。大多数客户都有不同的要求。我们通过使用基于继承的自制机制来实现这些特定于客户的扩展(因此每个安装都知道要加载哪些类,哪些不加载)。但是,所有这些客户特定的代码仍然与标准代码在相同的代码库中。
现在,由于以下几个原因(代码库变得丑陋和大,冲突的要求等)不再可能。
出于这个原因,我们决定分离代码库:一个用于标准产品,另一个用于客户特定的代码库。
我现在正在尝试找到支持这种方法的版本控制系统。这是我的愿望清单:
由于我们的团队仍然非常小(约4名程序员),开发人员自己也应该很容易处理。
顺便说一下,我们的软件是使用Spring和STS构建的(因此,Eclipse插件也很棒)。
到目前为止,我研究过的所有VCS似乎都有构建一个软件的目标 - 而不是几个。我希望得到一些建议或最佳实践方法。
答案 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非常适合保持变化)。