2010-04-10 49 views
0

我有一个产品分发给我的客户。每个客户端都需要一些UI自定义。我希望每个客户都能够轻松获得新版本的更新。svn分支机构的使用场景

我可以在svn中创建一个用作“基础项目”的项目,然后为每个客户端创建分支吗?有了这个说法,我能否将分支中的更改提交给分支,并将更改推送到核心?我是否也可以在只更新核心更改的分支中执行和“更新”命令?

回答

2

是的,你可以做所有你提到的svn!

您可以将分支“合并”到核心,指定要合并到主干(核心)的开始和结束修订号。

分支作为与你的trunk(核心)分开的东西,所以当你提交一个分支时,这些改变只会驻留在分支中,除非你明确地将它合并到trunk。

0

到目前为止,我所看到的命名是有3个基目录:

  • 主干:你的核心
  • 分支:所有的工作分支机构
  • 标签(或释放):所有不同版本的发布。基本上,你给客户的所有东西都应该放在那里。

此用法不会超载服务器:相同的文件保留一次,而不是每个分支一个。当你更新时,这对你是一个透明的用户。

当您需要对主干进行一些更改时,请先将主干合并到您的分支(以确保您拥有最新的主干),然后将分支合并到主干上。 (确保你没有在过程中无意中抹去任何东西)。

3

Mahesh有正确的答案,您可以为每个分支创建一个分支,并在您想要发布的时候从您的主干合并变更。

我会抛出一些建议,但:避免这样做!

不可避免地,,因为你可以自定义完整的代码,你会。即使“UI更改”也会导致问题 - 如果修改了trunk和客户端自定义分支中的同一段代码,则会导致必须在合并时手动解决的冲突。随着你的进一步发展,变化将变得越来越复杂,你的分支机构将更加脱离后备箱,越来越像是一种完全不同于定制的产品。

考虑这种情况:您需要引入一个新功能,或者想要重构现有的功能来修复一些错误或使其更容易维护。但是,这种更改会破坏现有代码(例如其他功能)。当你有一个单一的代码库时,至少你可以看到它会破坏的地方,以及你需要做些什么来修复它。当您有多个全部定制的分支时,该可视化是不可能的。


一个更好的选择是看你需要的所有这些客户到底该怎么做,并建立了一个框架,让这些定制,同时仍保持一个代码库。

如果您只想更改标题栏中的名称和几张图片,只需创建一个允许指定这些内容的配置文件(.ini或XML等)即可。您的应用程序在启动时读取它。现在您拥有一个代码库,您只需在部署过程中为任何客户端交换定制文件。

如果您需要自定义GUI的布局(通常称为“蒙皮”),则有预构建的框架可以帮助实现这一点。

在频谱的最远端,如果您确实需要提供代码自定义,请使用插件体系结构进行。构建提供基本API的接口,然后为每个客户端构建一个实现该接口的自定义库,但每个客户端都有自定义部分。您可以将控件,代码逻辑等放入库中。

细节超出了这个问题的范围,但是你可以做任何事情,而不必涉及(大多数)相同代码的多个副本将会引入的问题。

+0

感谢您的宝贵意见。我几乎肯定我唯一会改变的是一些.aspx和.ascx文件,当然还有css和图片,所以我相信这种场景可能适合我的需求。 – 2010-04-10 23:45:05