我使用Git和Beanstalk在本地开发WordPress,然后通过Beanstalk的部署流程部署到生产服务器。但是如何将生产服务器上所做的更改同步回我的本地开发/git repo?每当有人安装插件时,服务器上都会发生更改。有没有办法将这些更改拉回本地?
对于初学者的理解,我很感激。谢谢!
我使用Git和Beanstalk在本地开发WordPress,然后通过Beanstalk的部署流程部署到生产服务器。但是如何将生产服务器上所做的更改同步回我的本地开发/git repo?每当有人安装插件时,服务器上都会发生更改。有没有办法将这些更改拉回本地?
对于初学者的理解,我很感激。谢谢!
我运行了一个 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 上进行刺激。在那之后,产品服务器pulls
和每个人都很高兴。
这听起来像是很多工作,但实际上非常有效,尤其是在编写了一些钩子脚本之后。我仍在调整我们的部署过程中(例如,我几乎可以完全摆脱alpha
分支并在dev/feature
本地工作),但我们实际上拥有生产服务器的每日快照,以及能力随时同步所有分支。
此外,关于您的master
分支 - 将其保留为 WordPress 的香草安装非常棒,因为您实际上可以轻松地测试新版本升级。您可以只签出 master 然后运行更新,然后慢慢集成自定义。
在我看来,理想情况下不应该在生产中进行更改。难道你不能看看一种安装插件的方法,你可以将插件添加到 git repo 并将其推送到 prod 吗?我知道您可能正在谈论从 WordPress UI 安装插件并将其添加到 PROD,但我认为您应该获取插件内容,添加到您的存储库并推送到 PROD。
如果这根本不可能,您必须确保在 PROD 中安装新插件时提交插件内容,然后您才能git pull
同步内容。
我认为简短的回答是这个过程被 wordpress 打破了。我还没有找到一个解决方案,通过 ftp 访问的 wordpress 可以将其更改的文件添加到 repo 并成为新版本。
让我把它收回一分钟。我的意思是没有用户干预。如果您将您的 ftp 映射为驱动器和/或将您的生产站点同步回主干中的计算机,然后提交更改,您可以将 wordpress 生产服务器上发生的事情返回到您的存储库。
除了删除 wordpress 中允许用户执行编码人员认为不好的做法的所有好功能之外,应该有一个解决方案。我正在使用 beanstalk,如果除了部署到生产服务器之外,我还可以告诉它自动将来自生产服务器的更改添加回 repo 并通知我更改。然后我可以去比较正在发生的任何事情,如果它有问题,请从以前的版本重新部署。
事实上,情况是有限的,需要做更多的工作。我想我可以尝试构建自己的自动拉取和签入机制,但这听起来很累。如果有人知道更好的方法(除了使用 SSH 运行服务器),我很想听听解决方案。