gpt4 book ai didi

java - 用于客户分发的SVN结构

转载 作者:可可西里 更新时间:2023-11-01 13:38:15 25 4
gpt4 key购买 nike

我正在开发一个包含几个模块(JSP,JS和CSS)的Web项目。

从SVN的 Angular 来看,为几个客户端分发应用程序时最好的方法是什么,其中每个客户端都可以访问有限数量的模块,并且可以自定义每个页面的布局。

最佳答案

从一个在配置管理的沼泽和and沟中度过数十年的家伙那里拿来:

不要使用分支

抱歉大喊大叫,但我想警告您不要去那里。甚至不考虑去那里。分支意味着处理分支,并且永远不会发生。它变得越来越难维护,并且开始被忽视。让我们看一下两种不同的策略:

每个客户的分支

哦,听起来很简单。我将创建一个基本项目,并在不同客户分支上标记客户之间的差异。如果所有客户都有更改,我将其放在基础分支上,并将其合并到所有各个客户分支。有什么可能更简单?

我已经看到公司因为这种策略而倒闭。他们决定为客户创建自定义代码,因此为该客户分支。然后,第二个客户需要自定义代码,并为此分支。然后三分之一。现在,似乎客户端#3也需要更改客户端#1。好吧,我们将合并从客户端1到客户端3的更改。等等,客户端2也需要更改。好的,我们也将其合并到客户端2。

但是,此功能现在已在所有客户中使用,但不包含在您的基本代码中。您的基本代码与客户拥有的完全不同步。总有一天,您会将这些更改添加到该基础代码中并进行更新,但是您从没有这样做。取而代之的是,它变成了令人讨厌的提醒,说明您已将其炸毁。

每五年,您应该获取源代码,将其放入粉碎机,然后重新开始。这是因为每隔五年,整个软件环境都会发生巨大变化,以至于您的遗留代码变得束手无策,以至于您无处不在。如果您只有一个项目,那么开始一个新项目也不错。但是,您现在有六个客户和六个不同的项目。您没有资源将所有内容组合在一起。您已将自己写到虚拟角落。

但是,竞争者会过来,他们将拥有最新,最出色的代码,他们将一一拉开您的客户,直到他们全部消失,您的工作也将如此。我已经看过一遍又一遍了。您必须不断创新,但是到处都有客户特定的代码时很难。

保留核心代码,仅分支特定的客户资料

如果您从来没有编程过的话,听起来很简单。开发人员确切地知道这意味着什么:您需要从两个或三个独立的项目和/或分支中进行 check out 才能进行开发。这些组合中的某些组合会产生难以追踪的整洁而有趣的错误。您的连续构建服务器将为每种可能的组合增加作业。现在被认为是特定于客户的代码是基础代码,必须进行移动(尽管这可能永远不会发生)。

最后,保持直截了当是不可能的。您将得到的代码应该是特定于客户的基本代码,并且基本代码分散在客户之间。这非常类似于第一种情况,但是您还添加了一个事实,即您的构建系统也是 hell 。

那你该怎么办?

  • 首先,使用Maven。我不是Maven的忠实粉丝,但是它有很多功能。
  • Maven会告诉您确切如何布置所有内容。您将源代码放在这里,将JSP放在这里。没有人可以争论,因为Maven这么说。您可能不同意,但不能争论。 Maven会让您将每个jar或war作为具有其自己的pom.xml的单独子项目放入您的项目(该项目将有一个pom.xml将所有内容联系在一起。这是处理此问题的正确方法。
  • Maven具有处理依赖关系的内置方式。这不仅适用于第三方jar,还适用于您生产多个项目使用的jar。创建一个本地Maven存储库并使用它。
  • 不认识Maven?学习吧。了解它,就像您的薪水取决于它一样,因为它确实取决于它。知道Maven对于Java开发人员来说每年可能值(value)约20,000美元。是的,知道Maven的开发人员可以获得更多的报酬-大众捷达和奥迪A6之间的区别。
  • 创建一个统一的发行版,并使用配置记录来确定客户端应该看到的内容。如果客户端#1需要功能“A”,而客户端#2需要功能“B”,则将A和B都放入代码中,并具有一个配置记录来确定哪个客户端可以看到哪个功能。这样做的目的是让您在编写代码之前也要三思。 check out 特定于客户的分支机构并进行黑客入侵非常容易。但是,如果您有十二个客户端,并且只有一个代码库,则无法执行此操作。您开始寻找并看到共同点,也许是处理情况的更好方法。您最终得到了更好的代码。
  • 将有客户端特定的代码。在这种情况下,请为诸如自定义JSP屏幕之类的目录创建目录。尝试将其最小化,并使用Perl或Python脚本来帮助构建客户端特定的布局。实际上,使用单个集中式脚本,并提出一种配置方案来处理建立客户端差异的问题。这将使查看差异更加容易。
  • 为所有客户端发布一个版本,并设置您的服务器,因此客户端特定的配置不会被新版本覆盖。这使得发布变得更加容易,并且错误更少。

  • 90%的编码是在初始设计中。其余90%处于维护中。分支机构会带来更多维护,并鼓励您不必担心总体设计。如果不需要,请不要分支。

    关于java - 用于客户分发的SVN结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993646/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com