将在CMS级别所做的更改保存到源代码管理中的通常过程是什么?

时间:2019-07-03 作者:VaTo

我有一个安装了wordpress的开发环境设置,我每天都有一个wordpress开发人员在那里工作。每次他改变环境时,我都会感到不舒服,因为无法跟踪他所做的更改,所以如果出现错误,我们想返回3天,例如,我无法这样做。

我考虑过这个问题的不同解决方案,我想到的唯一解决方案是,每天运行一个cronjob,尝试查看文件系统中是否有任何更改(例如,上载了新文件),然后将其签入。我考虑过这种方法,但我不认为这对数据库部分有效,我无法查看数据库中是否有任何新的更改,因此我必须每天提交数据库,我的SCM将充满提交,使其不那么有效。

我想问社区他们是如何解决这个问题的,或者可能是使用了不同的技术。非常感谢。

5 个回复
最合适的回答,由SO网友:Castiblanco 整理而成

通常,您需要使用WordPress控制两组数据:

因此,从理论上讲,您可以每天手动复制文件系统和数据库来完成这一切。现在,让我们来看看您可能想要检查的工具,以加快速度,我将重点介绍其中的三个工具,以便您可以从一些工具/系统中进行选择。

Revisr (Hard)

Revisr是一个WordPress版本控制插件,可帮助您从仪表板管理WordPress文件和数据库。你应该知道Git 在您完全使用此插件之前,您可以从以下内容中了解更多信息this guide.

VersionPress (Medium)

VersionPress帮助您跟踪WordPress中的所有更改。不像Revisr 它不需要您进行提交,因为每次更改后都会这样做。例如,当您创建页面或安装新插件时,VersionPress 跟踪它。对于它记录的每个更改,VersionPress为您提供了一个选项,可以撤消某个操作而不影响其他操作,也可以回滚到执行该操作之前的阶段。

WPEngine backups

这不是一个插件,而是一家提供可靠备份/恢复解决方案的托管公司。

我是WordPress自由撰稿人,我曾与许多不同的托管公司合作,从我使用的所有托管公司来看,WPEngine有更好的备份/恢复系统,它非常简单,您可以将其设置为每小时备份一次,然后您可以非常快地恢复。

唯一的缺点是价格,如果您的预算很紧,您可能想自己做,WPEngine不会帮助您查看开发人员的更改,但这很容易做到Stream, 这里真正重要的是你如何不费吹灰之力就回到某个状态。

SO网友:T.Todua

什么是不安全的:

只使用revisor或audit trail插件,it\'s not safe, 因为如果他/她是一个不可靠的开发人员,他也可以很容易地修改这些插件的文件/数据库来隐藏某些操作。

监控开发人员的真正(也是唯一)安全方式如下:

使用BitBucket上的git存储库,并将其添加到那里

  • 创建从Bitbucket到服务器的自动部署(与Jenkins一起)(这样,开发人员就无法访问服务器)[em>我将找到详细描述此过程的链接

  • SO网友:keepkalm

    你可以跟踪你的用户在做什么,我通常安装流,审计跟踪是一种替代方法。您可以按用户跟踪更改,查看主题或插件是否已编辑或设置是否已更改。它可能无法像您希望的那样跟踪文件中的代码更改。

    对于版本控制,可以使用Github。它将显示对文件所做的更改。这会减慢开发人员的速度,但他们可能已经熟悉了。

    听起来您还可以从更频繁的备份中获益。

    SO网友:Junnel Gallemaso

    VersionPress非常适合您的要求-https://versionpress.com/

    管理中的任何更改都将创建一个VP文件,您可以在此处找到该文件-wp内容/vpdb

    如果您还熟悉CLI,则可以轻松地将这些VP文件从一个环境部署到另一个环境,例如,转移到生产环境,反之亦然

    SO网友:Nicolai Grossherr

    一般来说,听起来您希望控制部署步骤,因此推动从开发到登台再到生产的更改;或者不管你的确切过程是什么。例如,您只允许开发人员访问开发环境,但您希望在那里对所做的所有更改进行概述。在我看来,没有必要使用插件进行版本控制。

    使用git diff 应该足以跟踪文件更改

    显示工作树与索引或树之间的更改、索引与树之间的更改、两棵树之间的更改、两个blob对象之间的更改或磁盘上两个文件之间的更改。

    显示提交之间的差异:

    git diff old new 
    // file names only
    git diff old new --name-only
    
    有关更多选项,请参阅文档。

    我认为这是相当明显的,而且几乎只是一个监测变化的问题。

    关于数据库,您可以使用mysqldump 将数据库放入文件

    mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些SQL语句来复制原始数据库对象定义和表数据。它转储一个或多个MySQL数据库以进行备份或传输到另一个SQL server。

    mysqldump --skip-extended-insert --skip-comments -u username  -p dbname > dump.sql
    
    可以指定该命令来排除某些表,例如,您不关心wp_posts 表正在开发中,或者您只包括特定的表,例如wp_users – 简而言之,可以实现更高的精确度。

    然后你使用diff

    逐行比较文件。

    diff old.sql new.sql
    
    并检查差异,查看所做的更改。

    当然,数据库备份/转储可以自动化,例如,也可以进行版本控制,但我不会深入讨论。

    检查完成后,如果所做的所有更改都是需要的并且已准备好生产,则可以实施部署策略。

    我觉得这是一个相当简单的过程,可以实现以实现您想要的控制。

    除此之外,我想概述并说明一个不依赖插件的过程。

    相关推荐

    如何使用乌龟SVN为WordPress Core做贡献?

    我期待逐步指导如何使用提交补丁Tortoise SVN 因为有点不清楚documentation 对我来说。例如,它说,“”Open the folder, 并找到需要更改的文件。在您喜爱的纯文本编辑器中打开它。注意:不要使用诸如Word或OpenOffice之类的富文本编辑器来编辑文件。“”什么文件夹?我知道这意味着有WordPress核心文件的文件夹。但是我应该在哪里买到呢?(来自https://wordpress.org/download/ ???)那么,当我去创建一个新的记录单时,我应该选择“增强