3

我使用Git和Beanstalk在本地开发WordPress,然后通过Beanstalk的部署流程部署到生产服务器。但是如何将生产服务器上所做的更改同步回我的本地开发/git repo?每当有人安装插件时,服务器上都会发生更改。有没有办法将这些更改拉回本地?

对于初学者的理解,我很感激。谢谢!

4

3 回答 3

2

我运行了一个 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将新的提交输入。然后它们会同步。

在开发环境中对其进行测试后,我将本地生产分支与远程同步,如前所述,它每天都会获得用户内容提交。然后我将mergecherry-pick提交到产品中,然后push在 gitolite 上进行刺激。在那之后,产品服务器pulls和每个人都很高兴。

这听起来像是很多工作,但实际上非常有效,尤其是在编写了一些钩子脚本之后。我仍在调整我们的部署过程中(例如,我几乎可以完全摆脱alpha分支并在dev/feature本地工作),但我们实际上拥有生产服务器的每日快照,以及能力随时同步所有分支。

此外,关于您的master分支 - 将其保留为 WordPress 的香草安装非常棒,因为您实际上可以轻松地测试新版本升级。您可以只签出 master 然后运行更新,然后慢慢集成自定义。

于 2011-08-24T16:24:12.360 回答
1

在我看来,理想情况下不应该在生产中进行更改。难道你不能看看一种安装插件的方法,你可以将插件添加到 git repo 并将其推送到 prod 吗?我知道您可能正在谈论从 WordPress UI 安装插件并将其添加到 PROD,但我认为您应该获取插件内容,添加到您的存储库并推送到 PROD。

如果这根本不可能,您必须确保在 PROD 中安装新插件时提交插件内容,然后您才能git pull同步内容。

于 2011-08-23T22:16:44.950 回答
0

我认为简短的回答是这个过程被 wordpress 打破了。我还没有找到一个解决方案,通过 ftp 访问的 wordpress 可以将其更改的文件添加到 repo 并成为新版本。

让我把它收回一分钟。我的意思是没有用户干预。如果您将您的 ftp 映射为驱动器和/或将您的生产站点同步回主干中的计算机,然后提交更改,您可以将 wordpress 生产服务器上发生的事情返回到您的存储库。

除了删除 wordpress 中允许用户执行编码人员认为不好的做法的所有好功能之外,应该有一个解决方案。我正在使用 beanstalk,如果除了部署到生产服务器之外,我还可以告诉它自动将来自生产服务器的更改添加回 repo 并通知我更改。然后我可以去比较正在发生的任何事情,如果它有问题,请从以前的版本重新部署。

事实上,情况是有限的,需要做更多的工作。我想我可以尝试构建自己的自动拉取和签入机制,但这听起来很累。如果有人知道更好的方法(除了使用 SSH 运行服务器),我很想听听解决方案。

于 2012-03-27T18:14:49.583 回答