我运行 CMS,正如我在评论中所说,我在 manojlds 的帮助下设置了工作流程。我想扩展我们的实施,希望能帮助您处理用户创建的内容。
我将 gitolite 设置为我们的远程存储库。它摇摆不定。
我们的分支模型是这样工作的,使用 WordPress 作为上下文:
master - # this is the _vanilla_ install of wordpress with no modifications
prod - # the branch that the production server pushes/pulls to
dev - # dev environment pushes/pulls to, in our case a server
alpha - # really early development, ideas, etc - my personal branch that i work on mostly
features (opt) - # as needed, I'll make feature branches then merge them into the other branches.
我们的产品每天处理大约 40-45 个不同的静态文件,它有一个每天自动添加/提交用户更改的文件和数据的 cron。这会拾取所有基于用户的更改,并且(在您的情况下)会拾取插件安装。这很棒,因为您有他们的安装历史记录。
对代码库的实际更改通常在 alpha 中进行探索,然后合并到 dev。我们创建了一些钩子,当我们 push 到 dev 分支时,开发服务器会自动 pulls 新提交。然后它们会同步。
在开发环境中对其进行测试后,我将本地生产分支与远程同步,如前所述,它每天都会获得用户内容提交。然后我将merge 或cherry-pick 提交到产品中,然后push 对gitolite 进行刺激。之后prod serverpulls,大家都很开心。
这听起来像是很多工作,但实际上非常有效,尤其是在编写了一些钩子脚本之后。我仍在调整我们的部署过程中(例如,我几乎可以完全摆脱 alpha 分支并在本地使用 dev/feature),但实际上每天都有生产服务器,以及随时同步所有分支的能力。
另外,关于您的 master 分支 - 将其保留为 WordPress 的香草安装非常棒,因为您实际上可以轻松地测试新版本升级。您可以只签出 master 然后运行更新,然后慢慢集成自定义。