我在编写的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 feed一起使用的库。我们将这些作为git子模块包含在内,以便我们可以更新任何网站中的模块并将更改推送回所有其他项目。这使得将更改应用于我们的代码并进行分发变得非常容易。我们希望将CMS变成一个模块,这样我们就可以获得相同的好处 - 我们可以在源代码控制下运行整个项目,然后根据需要通过git-submodule更新cms。然而,我们遇到了一个问题: cms需要javascript / images / css才能正常使用。
我们想到的事情:
我们可以创建2个子模块,一个用于cms-skin,另一个用于cms,但这意味着你不能“git pull”一个版本而不知道哪个版本的皮肤可以使用哪个版本的cms。即版本1.2.2 CMS可能存在1.0.3 CMS-Skin
我们可以将皮肤添加到cms模块,但这有以下问题:
这通常是如何在大型cms中完成的?如何在版本控制下获取cms的源代码,为客户端处理应用程序,然后将源代码更新为发行版并由供应商提供?像Magento或Drupal这样的应用程序如何做到这一点?
答案 0 :(得分:2)
我不熟悉CMS项目,但您可以:
通过这种方式你只能拉动cms,并且它会带来你所需要的cms-skin的确切版本。
有关详情,请参阅此 SO answer ,了解子模块的真实性质。