如何维护symfony网站的不同版本

时间:2015-06-22 10:55:37

标签: php git symfony versioning

我正在开发一个symfony 2网站,它是我们公司销售的产品(每个客户都有自己的安装)。

我们的每个客户端都有一个略有不同的网站版本:有时差异很小(不同的字符串,略有不同的模板),有时它们更大(激活不同的包,不同的数据库模式,不同的security.yml文件等。)

目前每个版本都位于自己的git分支上。这是现在有效的,因为我们只开始销售,但还没有很多客户(=分支机构)。

但我想转向更好的解决方案。 有什么想法吗?

谢谢, 甲

2 个答案:

答案 0 :(得分:1)

我不认为分支是一个很好的解决方案,因为它不适用于这种用例。正如我所看到的,分支应该用于分段或功能/修复。

正如我所看到的,你几乎没有选择(如果你不熟悉这些选项,你应该在我附上的链接中阅读更多关于它们的信息):

  • Git子模块。 "子模块允许您将另一个Git存储库保存在存储库的子目录中。另一个存储库具有自己的历史记录,不会干扰当前存储库的历史记录。这可用于具有外部依赖性,例如第三方库。" http://git-scm.com/docs/git-submodule
  • 作曲即可。这是我认为最适合你的。使用常规依赖项管理器(php的composer,nodejs的npm等)。我将完全控制您使用的版本+简单的部署选项。 https://getcomposer.org/

另一个选择就是这样做"旧学校" ..如果他们都在同一台服务器上,只需保留"核心"在根文件夹中的东西,并包含在每个项目中。这不是一个推荐的方式,但它可能已经足够,并且不需要你做出太多改变

答案 1 :(得分:1)

我不同意。如果它是单个应用程序,那么每个客户端或版本的分支,即需要单独历史记录(变更跟踪)的配置,正是正确的做法。客户端使用/共享相同的应用程序,"核心"等等,但是您可能希望控制何时将一个客户端的功能/错误中的更改合并到其他配置(即分支机构)中。每个客户都必须进行升级"通过手动分别从开发分支到客户端分支。您希望支付此开销以获得稳定性和隔离。

至于你提到的具体差异:

  • 不同的字符串:客户端特定的配置,常量,部署内容,应该在每个客户端/部署模块(包含文件,无论如何)中,您可以在合并时简单地忽略,以便核心应用程序代码没有客户/部署特定的差异,永远。
  • 略有不同的模板:嗯,这闻起来很糟糕;如果您可以使用符号常量或部分或其他,并将差异移动到config.php,请参阅上面的解决方案。否则,不要模板差异表明它不再是同一个应用程序了吗?
  • 激活了不同的bundle:如果你可以把include语句放在config.php中,没问题。
  • 不同的数据库架构:讨厌的业务。这个应用程序可以独立于架构吗?你能以某种方式做多态吗? Nu,我不知道,20年后还没有触及PHP,我现在只做CoffeeScript和NoSQL。 ; O)
  • 不同的security.yml:与config.php相同,不是问题,只是不要合并该文件,甚至完全停止跟踪它(从repo中删除)。

HTH。  ; O)