Wordpress Git Workflow Help

时间:2013-09-03 作者:Ryan Dennler

我正在寻找一个强大的简化工作流程的想法与Wordpress合作。

希望我的git环境在内部位于自己的服务器上,而不是使用Github处理reposhttp://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) 要在按下操作时处理序列化数据库替换,可能会执行如下操作:

获取当前最新的wordpress版本并进行扩展,分支机构名称获取一个子域条目(branchdevelopment.domain.com)

  • 子模块您想要的主题,如果它可用的话(我想为此制作我自己的git repo,因为我使用thesis,我希望有一个空白的thesis git repo设置,以便从已经创建的服务器上从内部获取)
  • 签出并进行更改,客户机评论,一旦它推送到现场,然后,数据库脚本将自动将序列化url值从localhost(或子域)更改为实时url,这是否可行?我听说Capistrano也可以很好地利用它,但不确定Capistrano是如何工作的。

    我在自己的服务器上运行了大约200个站点,并希望开始将这些站点实施到一个强大的git工作流环境中,以便更好地简化我的工作。目前为止,我基本上下载了一个站点的图像,并在本地进行处理,然后将更改上传回服务器。在这个时代,这是非常乏味的。

    是否有人对这种类型的工作流有任何解决方案/过去曾使用过这种方法?如果是这样,请提供一些资源/答案。

  • 2 个回复
    最合适的回答,由SO网友:kaiser 整理而成

    回答的一般问题Nr.1. 希望在内部将我的git环境放在自己的服务器上,而不是使用Github处理repos。

    我要做的第一件事就是退房composer and how it works with WordPress, 这是一个项目Andrey "@Rarst" Savchenko.

    Nr.2. git分支创建时自动创建子域(development.example.com, ryan.development.example.com) - 可能一些shell脚本挂钩是实现这一点的理想选择。

    这超出了此网站的范围。或者在上寻求帮助StackOverflow 或者问问你的主人。一些主持人不允许自己编辑这些条目。

    Nr.3. Phing PHP/Shell脚本处理db迁移(类似于http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) 在推送时处理序列化数据库替换

    我设置了一个多站点/网络安装。这允许轻松管理所有表,将用户保持在中心位置等。

    WP Gear - 项目由Robert "@Wyck" Ellison - 具有备用生成脚本的列表。包括…在内WordPhing 他自己写的。@TomJNowells/互连。信息技术script 到目前为止还不在该列表中。

    回答的操作问题Nr. 1. 获取当前最新的wordpress版本并将其分支出来,分支名称将获得一个子域条目(branchdevelopment.domain.com)

    不知道为什么要这样做:每个分支都有一个子域。当你看到同步的WordPress GitHub repository 以及list of branches, 然后您将看到每个分支都被命名为X.Y-branch. 因此,您的子域将以以下名称命名:。3.6-branch. 我不确定是否允许子域以数字开头(应该是,但请询问您的宿主),然后问题是您会得到一个名为6-branch, 其子域名为3 还有一个叫2. 猜猜子域中的2和3版本分支配对并不是您想要实现的。

    简而言之:只是checkout 3.6-branch 如果需要切换分支。

    Nr.2. 子模块您想要的主题,如果可用的话(我想为此制作我自己的git repo,因为我使用的是thesis,我希望有一个空白的thesis git repo设置,可以从已经创建的服务器内部获取)

    Thomas "@toscho" Scholz 已经编写了一个很好的插件,允许我们使用子域来处理WordPress目录之外的主题。你可以在this answer 以及in this one. 自WP 3.6以来,即使自动更新也适用于主题。

    只需在wp-config.php 文件:

    define( \'WP_PLUGIN_DIR\',   \'path/to/your/plugins.dev/folder/plugins\' );
    define( \'WP_PLUGIN_URL\',   \'https://plugins.dev/plugins\' );
    define( \'WPMU_PLUGIN_DIR\', \'path/to/your/plugins.dev/folder/mu-plugins\' );
    define( \'WPMU_PLUGIN_URL\', \'https://plugins.dev/mu-plugins\' );
    
    现在只需将所有插件和主题置于版本控制之下,并将它们推送到服务器上即可。您可以使用mu插件或网络激活的默认插件轻松地使它们全部可用。

    Nr.3 签出并进行更改、客户端审阅,一旦推送到live,数据库脚本将自动将序列化url值从localhost(或子域)更改为live url

    如果Toms脚本/插件目前对您没有帮助,请告知that he accepts pull request on GitHub.

    SO网友:hakre

    没有时间写一个全功能的答案(我知道有点蹩脚),但无论如何可能值得分享(我可能会编辑这个,因为我也计划写一篇关于这个的博客):

    我在克隆Wordpress from Github (您甚至可以从这里对源树执行此操作:tierra/wordpress)

    然后我将其用作通过subtree merge 在我自己的网站repo中(我甚至在git中遇到了一个bug,但它的解决方案是:-X subtree=...).

    这意味着您可以有一些基于主干/版本分支的WP设置,可以完全破解,包括主题和插件。

    由于这是一个独立的(本地)存储库,您可以通过ssh将其推送到其他存储库,例如:

    位于应部署站点的远程主机上的(裸repo)中概述了这一点A web-focused Git workflow (Nov 2008; by Joe Maller).

    如果你有一个选择混凝土的配置切换器wp-config.php 根据它运行的系统,您甚至可以集中配置所有主机(开发、实时、登台、好友等)回购协议内部。

    WP中的上游更改您只需在子树中获取和合并。

    您只需更新和提交的插件。

    部署很简单$ git push remote.

    在远程主机上为git repos、数据库和上载的文件运行每日备份,这既便宜又方便开发人员,而且非常灵活。这对于单个开发人员设置以及小型团队都很有效,因为每个人都可以从远程的裸机复制中签出。

    有一些注意事项:

    git别名git accept-theirsgit accept-theirs 如果有冲突的基线更改,您可以清楚地知道您喜欢处理哪一个更改,这会很有帮助。您可以在这里找到:Simple tool to \'accept theirs\' or \'accept mine\' on a whole file using git

    1、希望在内部将我的git环境放在自己的服务器上,而不是使用Github处理repos。

    Github在这里只处理上游回购(Wordpress),而不是您自己的回购。

    2、在git分支创建时自动创建子域(development.domain.com、ryan.development.domain.com)-可能一些shell脚本挂钩会非常适合这样做。

    概述的设置是一种模块化方法,每个站点有一个回购。它可以处理任意多个开发主机,也可以通过多站点安装来处理多个域,但在这种方法中,这将被视为一个wordpress设置。

    3、Phing PHP/Shell脚本处理db迁移(如下所示http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ ) 在推送时处理序列化数据库替换

    这里不需要这样做,因为只有代码处于版本控制之下,数据库在开发(、暂存)和生产之间是独立的。

    您可能正在寻找一个能够正确进行域迁移的安装脚本,但即使有更好的代码(可用)来处理序列化数据搜索和替换,在这里的设置中,通常也没有必要,因为您只需将更改推到活动状态,对于测试用例,您可以在开发数据库中快速创建内容,这通常是最小的问题(根据我的实际经验,您可能会有所不同,但我也建议将此类数据库迁移相关主题保留在网站上,但请询问他们)。

    我在自己的服务器上运行了大约200个站点,并希望开始将这些站点实施到一个强大的git工作流环境中,以便更好地简化我的工作。

    我无法想象这些网站在一个字符串git工作流环境下会变成什么样子。也许您在这里管理的配置脚本和配置数据将保持在git版本控制之下。这可能有道理。否则,就网站数量而言,我认为将所有这些网站都保存在一个git回购中是毫无意义的。甚至可能不是其中之一,因为我上面概述的是针对您开发的站点(包括WP核心代码),而不仅仅是针对安装任务。因此,您可能首先需要自己创建一些这200个站点的小地图,以及它们如何相互作用,以及这些站点由哪些包(WP核心、插件、主题)组成。第一件事可能是创建一个电子表格/矩阵,并将所有站点放入其中。

    然后可以将其另存为CSV,将其置于版本控制之下,并使部署脚本基于该文件执行其工作。

    如果我在自动化任务方面学到了一些东西:遵循Unix理念,使用现有的和运行良好的工具(最好花半天时间阅读一些命令,然后尝试寻找替代方法,因为对于大多数工作来说,问题已经解决了),并专注于命令行工具。他们是最强大的。

    结束

    相关推荐

    使用Git跨多个开发人员保持WP数据库同步

    我正在改进我的git工作流,因为它适用于我的WordPress开发项目。通常,在开发内容管理系统时,我会创建一个开发服务器(如http://dev.finalsitename.com) 包含将在生产版本中使用的自定义帖子类型和分类法。这允许我的客户开始向网站添加他们的内容。在他们完成这项任务时,我通常会构建外观和感觉,以及将在本地主机环境中使用的自定义编程/插件。为了确保我不会覆盖他们的任何更新,我通常会下拉他们数据库的副本并替换我的。然而,有时我只需要跳进WP管理区域,更改设置或其他一些小的东西。。。如