Version control 为旧系统组织版本控制系统

Version control 为旧系统组织版本控制系统,version-control,tfs,branch,alm,Version Control,Tfs,Branch,Alm,我们正在研究如何为遗留系统使用现代代码版本系统。 然而,有些困难我们并不真正知道如何解决。你认为我们应该如何组织这次会议 我们负责代码的某些部分,客户负责代码的某些部分 我们开发系统中的代码是主代码,所有更改都在那里进行,然后发送给客户。到目前为止,它就像一个普通的项目。但是对于一些包含几百个文件的目录,客户机负责代码。客户可以根据需要更改这些文件,而无需通知我们。当我们为它们进行更新时,我们需要获得这些文件的副本,并在将新版本提供给客户之前合并我们的更改 在该系统存在的25年中,我们发布了4个

我们正在研究如何为遗留系统使用现代代码版本系统。 然而,有些困难我们并不真正知道如何解决。你认为我们应该如何组织这次会议

  • 我们负责代码的某些部分,客户负责代码的某些部分

    我们开发系统中的代码是主代码,所有更改都在那里进行,然后发送给客户。到目前为止,它就像一个普通的项目。但是对于一些包含几百个文件的目录,客户机负责代码。客户可以根据需要更改这些文件,而无需通知我们。当我们为它们进行更新时,我们需要获得这些文件的副本,并在将新版本提供给客户之前合并我们的更改

  • 在该系统存在的25年中,我们发布了4个基本版本。然而,我们的六个客户使用不同版本的系统,这意味着我们必须考虑它。此外,每个客户都有自己的要求,我们为每个客户做了重大调整

  • 我们有几个与相同文件相关的并行项目。今天,我们面临着各种项目相互干扰的重大问题,因此我们将从不同分支的变更中获益匪浅。但我们如何组织这一切? 一些项目只影响一个客户,其他项目涉及多个客户。一些项目可能会被引入到新的未来基础版本中


  • 所以我的问题是如何在我们的新版本系统中组织它。

    我想这不是一个版本控制问题。这是一个“不良遗留系统”问题。你不能让用户篡改源代码,即使是定制也不行。您需要通过将用户更改的代码放入一个单独的二进制文件、单独的项目或类似的东西来隔离这些代码。用户修改的任何代码实际上都不可能被你修改,你是绝对正确的。当客户有机会更新某些代码时,会出现很多问题。几天前,我在德国参加一个项目的期末考试时遇到了一个问题。我发现我的代码版本不对。当一位同事从客户导入最新的代码更改时,我的代码只是被客户的代码覆盖了。由于我们还没有任何版本控制,我不得不搜索备份并试图找到正确的版本。但是客户已经这样工作了25年,很难改变工作方式。因此,我们必须适应我们的工作方式,不管我们怎么想,并努力做到最好。对不起,你错了。你不必继续朝自己的脚开枪。你可以做得更好。25年前您没有定义扩展性策略,但现在您可以这样做了。获取所有客户代码和“原始”代码,修复名称空间(投资ReSharper),然后开始重构。消除所有重复,剩下的就是客户之间的差异。这些差异将是客户需要定制的地方。使用现代技术生成等价的代码(例如,具有虚拟覆盖的基类)。此外,尝试利用这个机会介绍单元测试,包括原始代码和客户代码。完成此清理后,您将有新代码返回给每个客户,这将是他们自定义的代码。还要给他们一份通用代码的副本。您还将确定一组客户可以使用的扩展点。记录这些要点,不要让客户更改任何其他内容。