使用Subversion部署WordPress

时间:2011-12-15 作者:Thomas Clayson

我在我的网站上使用Subversion。到目前为止,这意味着要为我的每个网站创建一个新的回购协议。然而,这是完全低效的,因为这意味着我要为每个网站的整个WordPress源代码忙碌。这也意味着我必须在repos之间复制插件,从而每次都复制代码。

所以我想做的是创建一个只包含我的主题文件(以及其他特定于站点的目录,如特定于站点的插件)的repo。然后,这将有一个指向我将要构建的WordPress版本的标记WordPress存储库的链接,以及指向我的其他共享插件repo的链接,因此为了发布或部署以进行测试,我只需执行svn checkout svn://path/to/site/repo 它会下载整个WordPress repo,所有我的插件和所有特定站点的东西。

有没有办法做到这一点?还是这是个坏主意?有没有更简单/更好的方法来做到这一点?其他人是怎么做的?

4 个回复
SO网友:Lazy Badger

嗯,没有什么可以阻止使用Subversion来解决此任务

Note: 根据您自己的主题/插件存储库的布局,某些步骤可能会有所不同(我想,它们是主干内的目录,整个树不会重复标准的WP布局:/wp-content/themes/ wp-content/plugins/)

为了开始,您必须:

空的Subversion存储库,您可以在其中提交有关svn的基本知识:所有组件(包括WP core)的外部URL,您要在“分发”中合并这些URL的通用规则:

所有组件都在自己的回购中提供,我们的回购仅在一个地方将它们链接在一起

操作:

签出(空)中继线svn co URL/trunk Deploy

  • 将所有组件定义写入文本文件(externals.txt用于示例)(将其保存在任何位置,它不必是repo的一部分),如果它们出现在类似于

    wordpress http://core.svn.wordpress.org/tags/3.5/

    wordpress/wp-content/plugins/plugin-one URL-OF-PLUGINONE

    ...

    wordpress/wp-content/themes/Mytheme URL-OF-MYTHEME

    (每一行都是新的外部定义,第一部分-本地目录的相对路径,空格-分隔的第二部分-目录内容的源)

    • cd Deploysvn propset svn:externals . -F ../externals.txt
    • 提交更改更新(或签出中继到新目录)并查看wordpress目录中收集的所有:核心、所需模块和主题,下一次,当您想要更改可部署WP的配置时,您只需编辑现有svn:外部定义(“svn propedit”、“svn Commit”)并在签出更新的配置后获取。

  • SO网友:Dunhamzzz

    我有一个多站点设置,WP从SVN下拉,要更新所有站点,我所要做的就是svn sw ... 命令并访问wp admin中的升级页面。

    如果所有站点都在同一台服务器上,我建议查看多站点。

    SO网友:Rutwick Gangurde

    使用NetBeans。。。从SVN签出副本时,可以直接将其用作项目的源文件,同时将其与服务器同步。NetBeans可以精确地跟踪新文件、更改的文件,您可以比较修订、提交、更新等。它非常棒,不需要命令提示(除了从命令行/终端执行的签出/导出/导入)。

    SO网友:Nik Dow

    我们使用PY脚本通过SVN每天检查两次更新。它正确地解析了/trunk/readme。txt文件,读取稳定的标记行并下载正确的标记,如果正确,则使用/trunk。它还处理主题更新。

    您可以从https://github.com/nikdow/wordpress_plugins/

    您可以为它提供一个目录列表,以便从cron更新和运行它。

    一个优点是,文件都可以属于root,因此您不会受到将PHP插入webroot中可写目录的黑客攻击。

    结束

    相关推荐

    如何使用Tortoise SVN和worpress.org插件存储库来处理更新时的插件版本?

    最近我尝试将插件更新到WP server。trunk文件夹的更新进行得很顺利,但当我在tags文件夹下创建了一个新版本的文件夹并尝试上载它时,只有该文件夹的直接子文件成功上载,子文件夹没有成功上载。最后,我发现svn信息文件“认为”服务器中已经存在这个子文件夹,尽管它不存在,所以我使用了乌龟删除功能,并多次添加它,然后单击提交。经过一个多小时的反复尝试,我终于成功了。这真的很令人沮丧,因为我知道人们已经收到了更新通知,其中一些人可能已经更新并收到了导致管理员崩溃的错误消息!我的问题是:我应该切换到使用命令