svn - 不同版本产品的项目结构

标签 svn version-control

我们想要开发一种产品并将其交付给多个客户。现在我们遇到这样的情况:一些客户想要拥有附加功能 x,而另一个客户想要拥有功能 y。 部分功能还需要对产品的软件架构进行一些改变。

当然,所有客户都希望受益于所有客户定义的官方功能。

现在我的问题是如何最好地处理这个问题?我们目前正在使用 SVN 进行版本控制,只要您有一个主干并且可以创建标签,这种方式就非常有效。

我知道我们可以为每个客户创建多个主干,然后将所有功能合并到多个客户主干中,但这需要大量的手动工作,并且很快就会变得困惑。

感谢您的帮助

最佳答案

这是一个大而毛茸茸的话题 - Martin Fowler 有一篇关于功能分支的精彩文章 (http://martinfowler.com/bliki/FeatureBranch.html);还有抽象分支(http://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/)。

最大的风险是您最终会使用 SVN 作为“正确”架构的替代品。如果您需要以这种方式支持多个功能,您可能应该构建解决方案以在运行时(通过配置)或构建时(通过配置)支持此功能;常见的方法是使用插件。

使用源代码控制系统“合并”功能会使合并过程陷入不可预测的、不稳定的困惑 - 您可以合并来自另一个分支的代码这一事实并不意味着这一切都有意义 - 并且开发人员在不同的功能/分支上工作可能会重复彼此的工作,或者在设计上做出相互排斥的决定。

关于svn - 不同版本产品的项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7954524/

相关文章:

Svn -> 带有多个主干/分支/标签的 git 迁移

version-control - 通过交叉授粉跟踪、维护销售/营销 Word 文档的多种变体/风格的策略?

git - 对于一个人的商店来说,最好的 git 安装结构是什么?

svn - 如何从 svn 版本控制中删除文件而不从每个工作副本中删除它?

sharepoint - 迁移到团队系统的策略

svn删除删除的文件

linux - 如何为现有的 SVN 颠覆服务器添加新用户帐户?

svn - Tortoise SVN 提交错误 : 'Invalid PROPPATCH property'

git - 使用 Git,子树 merge 具有子模块的外部项目的最佳方法是什么?

svn - 显示日志未显示所有修订