我目前有一个网络应用程序有3个前端(取决于你去的URL),它们在3个前端之间共享很少的代码。我的目录结构如下所示:
\app1
\includes
\html
\app2
\includes
\html
\app3
\includes
\html
\crons
\libs
\logs
\setup
\db
\shared
\globalFunctions
\oldAPI
\oldClasses
App文件夹是各自的前端,其中包含自己的包含和docroot的'html'。 Crons只适用于CLI作业,libs是较新的PHP5库,例如我们编写的新代码和Zend Framework等。日志是应用程序日志,设置是部署的设置信息,共享是旧的PHP4代码库,其中一些代码仍然依赖于它。一切都存储在一个大的SVN仓库中。
什么是理智的方式来打破这一点,以便我可以将这个大的SVN项目变成更小的项目,以便它更容易分支和合并?大多数项目无论如何都专注于单个应用程序,因此在需要在多个位置更新代码时很少见。
或者保持这个当前的结构是否更好,只需将PHP4代码移植到OO PHP5并自然地删除它?
答案 0 :(得分:1)
你需要问问自己,将这个应用程序分开以及它将花费多少我会得到什么价值。然后,如果您仍然想要这样做,请考虑如何将大型应用程序分解为较小的应用程序是一项功能,以及如何添加不需要的功能比不添加所需功能更糟糕。这属于LEAN软件开发。
这是我要做的。我会将您的共享代码转换为库。该库将被记录并作为其自己的项目处理。我还将为每个应用程序创建单独的部署脚本,并为主要部署脚本一次部署所有这些脚本。
\app1
\docs
\includes
\html
\logs
\setup
\deploy
\db
\app2
\docs
\includes
\html
\logs
\setup
\deploy
\db
\app3
\docs
\includes
\html
\logs
\setup
\deploy
\db
\crons
\deploy
\docs
\apps123
\libs
\newSharedLibName
\docs
\globalFunctions
\oldAPI
\oldClasses
\zend
\etc ...
我离开了cron,因为我不确定你在做什么。
P.S。 将应用程序拆分成小块总是比你想象的要难。
答案 1 :(得分:1)
您可以将其拆分为四个SVN项目 - 三个应用程序中的每一个都有一个,其余代码中有四个。然后,您可以将此共享代码定义为每个应用程序的外部代码,以便它们可以作为自包含的结帐运行。
这确实可以让你获得单独的项目,但是它会带来一系列问题 - 主要是如果你更新一个应用程序的共享部分,你必须对另外两个应用程序进行回归测试,以检查你是否已经破坏了任何依赖项。
这可能更麻烦,但它取决于你的工作方式。