Php 内容管理系统的版本控制?

Php 内容管理系统的版本控制?,php,git,version-control,content-management-system,Php,Git,Version Control,Content Management System,在我们编写的CMS应用程序中,我有以下目录结构: /application /modules /cms /filemanager /block /pages /sitemap /youtube /rss /skin /backend /default /css /js /images /frontend /default /c

在我们编写的CMS应用程序中,我有以下目录结构:

/application
/modules
   /cms
      /filemanager
      /block
      /pages
      /sitemap
   /youtube
   /rss
/skin
   /backend
      /default
         /css
         /js
         /images
   /frontend
     /default
         /css
         /js
         /images
应用程序包含特定于当前CMS实现的代码,即此特定CMS的代码。 模块包含我们跨项目共享的可重用代码部分,例如用于youtube或rss提要的库。我们将这些作为git子模块包含,这样我们就可以在任何网站上更新该模块,并将更改推回到所有其他项目中。这使得对我们的代码应用更改并分发它变得非常容易。我们想把CMS变成一个模块,这样我们就能得到同样的好处——我们可以在源代码控制下运行整个项目,然后根据需要通过git子模块更新CMS。然而,我们遇到了一个问题: cms需要javascript/images/css才能正常工作。

我们考虑过的事情:

  • 我们可以创建两个子模块,一个用于cms皮肤,一个用于cms,但这意味着您不能在不知道皮肤的哪个版本与cms的哪个版本协同工作的情况下“git拉”一个版本。i、 e版本1.2.2 CMS可能与1.0.3 CMS皮肤有问题

  • 我们可以将皮肤添加到cms模块,但存在以下问题:


  • 皮肤应该在文档根目录上可用,模块代码不应该可用,如果是,可能应该通过.htaccess进行保护
  • 将资产与php代码捆绑在一起似乎没有任何意义
  • 我们可以在/skin/backend/to to/modules/cms/skin之间创建一个符号链接,但这会导致任何安全问题吗?我们是否需要类似于符号链接的东西才能使应用程序正常工作
  • 我们可以为git创建一个钩子,或者创建一个shell脚本,在更新发生时将文件从modules/cms/skin复制到skin/backend,但这意味着我们无法在项目中编辑cms核心文件,然后将它们推回

在大规模cms中,这通常是如何实现的?如何在版本控制下获取cms的源代码,为客户开发应用程序,然后将源代码更新为发行版并由供应商提供?像Magento或Drupal这样的应用程序是如何做到这一点的?

我不熟悉CMS项目,但您能:

  • 创建2个子模块,一个用于cms皮肤,一个用于cms皮肤
  • 将cms皮肤用作cms中的嵌套子模块
cms将是cms皮肤的“主要项目”,这意味着每次提交cms时,您都会首先提交cms皮肤,“cms提交”将启动提交时使用的cms皮肤的确切SHA1参考

这样,你只能拉cms,并与它将来的确切版本的cms皮肤你需要的


有关更多信息,请参阅此,了解子模块的真实性质。

当然-我了解git repos通过其sha哈希跟踪子模块的当前状态,问题在于,将cms皮肤放入cms会导致许多其他问题,我解释过了above@Mike:是的,但我不知道限制是什么。想法是a/在cms内的适当位置插入皮肤,b/插入皮肤版本(即特殊分支),内容重新组织以符合其新位置(即cms内)“皮肤应在文档根上可用,模块代码不应可用,如果是,则可能应通过.htaccess进行保护”