我的团队也面临类似的问题。我们使用git对自己的自定义代码(例如插件和编写的主题)进行版本控制。我们使用Composer来管理依赖项,例如我们未编写的插件。我们将composer.json和composer.lock文件检入git中,以使所有人保持同步。每个开发人员都应该拉git master分支并composer update
经常在游戏围栏上运行,以便每个人都保持最新状态。
在数据库中,开发人员主要关心配置,我们经常使用WP-CLI保持配置同步。例如,我们有一个运行WP-CLI命令的shell脚本,该脚本可基于每个主机启用或禁用插件。例如,某些插件仅在我们的内容登台主机上使用,因此该脚本可以在任何主机上运行,并且只会在该主机上启用适当的设置。只是记录了一些太费时间而无法编写脚本的配置,并在需要时手动进行了复制。
我们还有一个perl脚本,可以将数据库从内容登台服务器完全克隆到QA或开发主机上。如果开发人员需要所有当前内容,则可以定期使用此功能,尽管这通常不如拥有代码和配置重要。该脚本执行以下任务:
- 内容分级服务器的数据库的mySQL转储,更改表名称,加载到目标服务器的数据库中
- 使用wp-cli更改对数据库中登台服务器的引用以引用目标服务器
- 将目标服务器上的上载目录与内容登台服务器的上载同步
有一些有前途的解决方案可以很快对数据库进行实际版本控制。我知道的是VersionPress和Mergebot,也许还有其他两个。
我在博客上写下了有关如何设置WordPress以与git和Composer一起使用的更多技术细节。有必要在其自己的目录中运行WordPress核心,以使我们想要在git中维护的代码与WordPress核心之间完全分开。我们将WordPress本身视为依赖项,并使用Composer对其进行管理。