Php 内容管理系统的版本控制?
在我们编写的CMS应用程序中,我有以下目录结构: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
/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中的嵌套子模块
有关更多信息,请参阅此,了解子模块的真实性质。当然-我了解git repos通过其sha哈希跟踪子模块的当前状态,问题在于,将cms皮肤放入cms会导致许多其他问题,我解释过了above@Mike:是的,但我不知道限制是什么。想法是a/在cms内的适当位置插入皮肤,b/插入皮肤版本(即特殊分支),内容重新组织以符合其新位置(即cms内)“皮肤应在文档根上可用,模块代码不应可用,如果是,则可能应通过.htaccess进行保护”