Version control 可配置软件的分支策略

Version control 可配置软件的分支策略,version-control,configuration,branch,Version Control,Configuration,Branch,我正在开发一个应用程序,它是为不同的客户群开发的。根据客户的不同,软件的用户界面元素可能会有所不同。例如,一个客户可能需要菜单项X,而另一个客户需要菜单项Y 目前,用户界面的所有配置都是通过XML完成的(大部分是通过spring完成的)。对于不同的菜单选项示例,一个XML文件可能具有要在UI上显示的菜单选项列表 我试图找出如何最好地管理软件的分支,以便它们都可以使用相同的核心基线,并且都可以接收错误修复、更新等。分支之间唯一不同的是XML配置文件 是否有良好的管理实践/技术?我不完全确定每个客户

我正在开发一个应用程序,它是为不同的客户群开发的。根据客户的不同,软件的用户界面元素可能会有所不同。例如,一个客户可能需要菜单项X,而另一个客户需要菜单项Y

目前,用户界面的所有配置都是通过XML完成的(大部分是通过spring完成的)。对于不同的菜单选项示例,一个XML文件可能具有要在UI上显示的菜单选项列表

我试图找出如何最好地管理软件的分支,以便它们都可以使用相同的核心基线,并且都可以接收错误修复、更新等。分支之间唯一不同的是XML配置文件

是否有良好的管理实践/技术?我不完全确定每个客户是否需要不同的分支机构——这只是我的第一个想法,所以我愿意接受其他建议。但是任何关于如何最好地设置此设置的帮助都将不胜感激

如果它有助于了解,我们没有为这个项目使用分布式版本控制系统(使用SVN)

谢谢


杰夫

如果你能做到这一点,我强烈建议每个客户不要开一家分行。只要想想合并开销,乘以正常的分支数量,您可能会有其他原因,如发布后补丁


如果您可以坚持使用配置方法(无需重新编译即可打开和关闭功能),我希望您会发现这是一种更容易维护的方法。

在主干中,我将维护几个以客户机命名的配置文件。在准备交付时,我只复制相关的配置文件,并按照软件的预期重命名。

如果客户之间真正不同的只是XML配置文件,那么我不会为每个客户创建完整的代码分支。这是DRY的一个应用程序——如果代码在两个地方重复,那么它将失去同步

在这种情况下,您可以将所有配置文件保留在单独的分支中,或者使用一个基本文件并为每个客户提供配置覆盖。然后,您只需要制定一个构建过程,以便为给定的客户将所有这些整合在一起


我知道所有这些都是主观的,但这就是我解决问题的方法。

我想你是对的,拥有多个配置文件可能是最简单的。不过,将所有不同的客户机配置文件放在一个项目中感觉有些不正确。但这可能仍然是最简单的方法。对我来说,这些客户端配置不是同一文件的不同版本,而是不同的文件。根据每个客户端需求的变化,这些文件可以有几个版本。谢谢,感谢您的回答。@Ed,您对维护配置文件的位置有何想法?按照@mouviciel的建议,在单个项目中的所有客户端文件?或者其他方式?我倾向于一种基本配置,每个客户都有覆盖。我想我可以将它们存储在不同的分支中,但我不认为这才是分支设计的真正目的。但是,我确实喜欢将特定于客户端的配置文件从主分支中分离出来的想法。我只是想找到一个干净的方法。可能有单独的文件夹,然后使用构建脚本选择需要的文件夹。