我有一个产品可以分发给我的客户。每个客户端都需要一些UI定制。我希望每个客户端能够轻松获得新版本的更新。
是否可以在svn中创建一个项目作为“基础项目”,然后为每个客户端创建分支?这样说来,我是否能够将分支中的更改提交到分支,并选择将该更改推送到核心?我还可以在一个只更新核心变化的分支中执行and " update“命令吗?
发布于 2010-04-11 04:20:33
是的,你可以用svn做你提到的所有事情!
您可以将分支“合并”到核心,指定要合并到主干(核心)的起始和结束修订号。
分支作为独立于主干(核心)的东西,因此当您提交到一个分支时,更改只驻留在分支中,除非您显式地将其合并到主干中。
发布于 2010-04-11 05:20:59
Mahesh有正确的答案,你可以为每个分支创建一个分支,并在你想要发布的时候合并回你的主干中的更改。
不过,我会给出一些建议:避免这样做!
不可避免的是,因为你可以定制完整的代码,所以你将使用。即使是"UI更改“也会导致问题--如果您在主干和客户端自定义分支中修改相同的代码段,它将导致冲突,在合并时必须手动解决该冲突。随着你的发展,变化会变得越来越复杂,你的分支会离主干越来越远,感觉越来越像一个完全不同的产品,而不是一个定制。
考虑一下这样的场景:你需要引入一个新的特性,或者想要重构一个现有的特性来修复一些bug,或者只是让它更容易维护。然而,此更改将破坏现有代码(例如其他功能)。当你有一个单一的代码库时,至少你可以看到它会在哪里崩溃,以及你需要做些什么来修复它。当您有多个全部自定义的分支时,这种可视化是不可能的。
一个更好的选择是,看看你到底需要为所有这些客户端做什么,并构建一个框架来允许这些定制,同时仍然保留一个代码库。
如果您想要做的只是更改标题栏中的名称和一些图像,只需创建一个配置文件(.ini、XML或其他任何文件),以允许您指定这些内容。您的应用程序在启动时读取它。现在您有了一个代码库,您只需在部署期间为任何客户端交换出定制文件即可。
如果你需要定制GUI的布局(通常称为“换皮”),有一些预先构建的框架可以帮助你做到这一点。
在另一端,如果你真的需要提供代码定制,那就使用插件架构。构建提供基本API的接口,然后为每个客户端构建一个实现该接口但具有每个客户端的自定义部件的定制库。您可以将控件、代码逻辑等放入库中。
细节超出了这个问题的范围,但是你几乎可以用它做任何事情,而不必进入相同代码的多个副本(主要是)会带来的问题。
发布于 2010-04-11 04:28:11
到目前为止,我看到的命名法是有3个基本目录:
这种用法不会使服务器过载:相同的文件只保留一次,而不是每个分支都保留一个。当您更新时,这对用户来说是透明的。
当您需要对主干进行一些更改时,首先将主干合并到您的分支上(以确保您拥有来自主干的最新版本),然后将分支合并到主干上。(确保您在此过程中没有无意中擦除任何内容)。
https://stackoverflow.com/questions/2614815
复制相似问题