我正在开发一个包含多个模块(JSP,JS和CSS)的Web项目。
在为多个客户分发应用程序时,从SVN的角度来看,最好的方法是什么,其中每个客户端都可以访问限制数量的模块,并可以自定义每个页面的布局。
答案 0 :(得分:2)
从一个在配置管理的沼泽和战壕中度过几十年的人那里拿走它:
对不起喊叫,但我想警告你不要去那儿。甚至不去考虑去那里。分支意味着处理分支,它永远不会发生。它变得越来越难以维护,并开始被忽视。让我们看看两种不同的策略:
哦,听起来很简单。我将创建一个基本项目,并在不同的客户分支上标记客户之间的差异。如果所有客户都有变更,我会将其放在基础分支上并将其合并到所有不同的客户分支机构。什么可以更简单?
由于这种策略,我看到公司倒闭了。他们决定为客户创建自定义代码,因此他们为该客户端分支然后,第二个客户需要自定义代码,然后他们为此分支。然后是第三个。现在,客户端#3似乎也需要对客户端#1进行更改。好吧,我们将该更改从客户端#1合并到客户端#3。等等,客户#2也需要改变。好的,我们也将它合并到Client#2。
但是,此功能现在在您的所有客户端,但不是您的基本代码。您的基本代码与您的客户完全不同步。有一天,您将这些更改纳入基本代码并进行更新,但您永远不会这样做。相反,它变成了一个恶化的提醒,你已经吹了它。
每隔五年,您应该获取源代码,通过粉碎机重新开始。这是因为每五年一次,整个软件环境都发生了巨大的变化,以至于您的遗留代码成为您拖延的枷锁。如果您有一个项目,那么启动一个新项目就不会太糟糕。但是,您现在有六个客户和六个不同的项目。你没有办法把所有东西都拉到一起。你已经把自己写进虚拟角落。
然而,竞争对手会来,他们会拥有最新最好的代码,他们会逐一吸引客户,直到他们全部消失,你的工作也是如此。我一遍又一遍地看到它。你必须不断创新,但是当你到处都有客户特定的代码时,这很难。
如果你从未在你的生活中编程,那听起来很容易。开发人员确切地知道这意味着什么:您需要从两个或三个单独的项目和/或分支机构签出以进行开发。其中一些组合将创建难以追踪的整洁有趣的错误。您可以为每个可能的组合创建连续构建服务器。现在被视为客户特定的代码是基础,必须移动(尽管可能永远不会发生)。
最后,根本不可能保持直线。您最终将得到的代码应该是客户特定的基础代码,并且基本代码会在您的客户端之间传播。它与第一种情况非常相似,但您还添加了构建系统也是地狱的事实。
那你该怎么办?
pom.xml
一起放到你的项目中(它将有一个pom.xml
将所有东西联系在一起。正确的处理方法。90%的编码在初始设计中。另外90%正在进行维护。分支机构可以创造更多维护,并鼓励您不必担心整体设计。如果你不必,不要分支。
答案 1 :(得分:0)
考虑到css,js,..可能会影响应用程序的视图,可能为每个客户创建一个分支是个好主意。他们每个人都有自己的副本和行李箱供自己开发和推进
答案 2 :(得分:0)
当使用svn时,分支很重,我建议使用
一个主要项目
每个客户一个项目(带有主干和分支机构)
通过这种方式,您可以更轻松地管理整个事情,而不会将文件泄漏到错误的客户端,尤其是当客户端开始要求您访问其存储库时。
这取决于技术当然。在java中,我使用maven或ant任务将主项目包含为客户端项目使用的(混淆)jar。