如何将WordPress自动更新与Git版本控制集成?

21

我正在尝试解决一个非常困难的任务:如何适当地对WordPress进行版本控制,特别是在使用自动更新时。

WordPress通过允许用户仅需点击按钮便可更新WordPress核心文件、主题和插件,提供了很多简便性。但是当您使用像Git这样的版本控制工具来控制网站时,当我们点击“立即更新”按钮时,我们的Git仓库将不再同步,这就破坏了创建Git仓库的初衷。

我一直在寻找解决此问题的方法,发现的所有方法都是通过将WordPress安装分解为Git子模块来结构化它。最受欢迎的例子之一是WordPress-Skeleton 模板。

尽管这种方法可以对WordPress的每个模块/组件进行版本控制,但它仍然不允许用户能够从WordPress内部使用自动更新按钮,因为这将会更新生产中的文件,但不会将更改提交到您的Git仓库中。

在理想情况下,我们应该能够将所有文件都放入一个仓库中进行版本控制,然后当我们点击“立即更新”按钮时,它应该会自动将修改更新到我们的Git仓库中。有人知道如何实现这一点吗?

我想到的其中之一是创建一个插件,监听更新事件,并在触发该钩子后自动提交更改。不确定这是否是最佳方法。

请告诉我是否有更好的方法可以解决这个问题。


1
我首先会将WordPress核心以及任何第三方插件和主题都从git中排除。使用composer并通过这种方式引入所有内容。如果有人更新,你仍然会面临问题 - 老实说没有简单的方法来正确地完成这个过程。但是,composer将使您轻松保持存储库匹配。我在git中保存的唯一东西是我的自定义主题、wp-config.php等以及任何已编辑的内容。https://roots.io/using-composer-with-wordpress/ 是一个很好的起点。您不应该需要存储任何已经在其他地方进行版本控制的文件。 - Simon Pollard
有一个 WordPress 插件可以在 WordPress 中集成 Git:https://versionpress.net/ - Bipi
@SimonPollard 这个问题是关于如何在 WordPress 被版本控制的情况下使用 WordPress 自动更新。即使你没有使用 Git,如果你使用了像 Composer 这样的工具,你仍然无法使用 WP 的自动更新功能。使用 Composer 方法时,你仍然需要进入服务器并更新 WordPress 依赖项。 - Agop
我可能会让 WordPress 在生产环境中自行更新,然后在下次部署时更新 composer 的依赖项。您还可以设置一个 cronjob 来运行 composer install 以保持依赖项的最新状态,并使用宽松版本字符串来允许根据需要进行小型/大型更新的 WordPress 版本。 - Steen Schütt
2个回答

4
似乎问题在于“立即更新”按钮会触发“在生产环境中更新文件”,这些文件不是git仓库的一部分。
实际上,它们可以是:git仓库可以有一个专门用于WP通常树形结构的主分支,如 WordPress-Skeleton中所述,并且第二个分支用于监视对那些文件的更改。 从git 2.5开始,您可以在每个repo中有多个工作目录(这是“开箱即用”的部分)。 这意味着您可以将另一个文件夹(原始git repo之外的)声明为同一个git repo的工作目录。
一旦更新了“生产环境中的文件”,就可以通过简单的 git add -A; git commit 检测到该变化并将其提交(在专用分支中)。

1
这段内容涉及到Git方面的事情,但对于WordPress方面并没有太大帮助。问题的一部分在于找出在WordPress自动更新的过程中执行提交的最佳方法(而不是手动进行更新后运行git addgit commit)。 - Agop
@Agop 我明白,但是必须解决git方面的问题。 - VonC

4
首先,您不需要对整个WP文件夹进行版本控制,只需要对主题和插件文件夹进行控制,这样它们不会受到更新的影响。因此:

为什么这个答案被踩了?它是正确的!WP文件和文件夹是部署过程的一部分,而不是源代码的一部分!如果您的主题依赖于某些插件安装,则需要将这些插件包含在主题文件夹中,或者需要有逻辑要求用户安装所需的插件。 - Mario

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接