在MySQL数据库上使用版本控制(Git)

我是一名WordPressdevise师/开发人员,他越来越多地使用版本控制,特别是Git,尽pipe我在一些项目中使用了SVN。 我目前正在使用Beanstalk作为我的远程回购。

将所有的WordPress文件添加到我的回购没有问题,如果我想知道我可以.gitignore wp-config文件,但由于我是唯一的开发人员,目前,这些项目是封闭的源,它真的使没什么意义。

像任何CMS一样,WordPress严重依赖于数据库来保留文本内容,并依赖于我正在使用的特定插件/主题configuration进行许多设置。 我想知道在数据库上使用版本控制的最好方法是什么,甚至是可能的。 我想我可以做一个SQL转储,虽然我的MySQL服务器在Windows上运行(阅读:我不知道该怎么做),然后将SQL转储添加到我的存储库。 但是,当我推动一些生活,这构成了巨大的安全威胁。

有没有一个公认的做法呢?

你可以在git仓库中备份你的数据库。 当然,如果你把数据放入二进制forms的git中,你将失去所有git使用差异(变化)有效存储数据的能力。 所以最好的做法是:将数据以文本序列化格式存储。

mysqldump是一个合适的程序来帮助你做到这一点。 虽然这并不完美。 如果有什么干扰项目的序列化顺序(例如,由于创build新表格等),那么人造中断将进入diff。 这会降低存储效率。 你可以编写一个自定义的序列化程序来只改变序列化,但是你正在做git已经很好的努力。 只需使用SQL转储。

话虽如此,你所要做的并不是开发人员在讨论把数据库放在git中时通常的意思。 例如,如果您阅读@eggyal( 链接到codinghorror )发布的链接,您将看到实际放置在git中的是生成初始数据库所需的脚本。 可能会有其他脚本,比如那些用干净的状态填充数据库数据,或者用testing数据填充数据库。 所有这些SQL脚本都是文本文件,几乎和你从mysqldump获得的sql转储格式一样。 所以没有理由不能用你的日常数据这样做。

版本控制数据库(如MySQL和MongoDB)可用的软件并不多。

但有一个正在开发中,testing版即将推出。 查看Klonio – 数据库的版本控制

文章如何使用版本控制同步本地和远程WordPress博客提供了如何使用Mercurial自动同步WordPress博客的两个实例(开发,生产)的build议。 提到的是,在这种情况下,Git和Mercurial非常相似。

步骤4(同步数据库)在这里很有用。

数据库内容将被导出到由修订控件跟踪的文件。 每次我们进行更改时,数据库内容都会被这个文件replace,使我们的数据库保持最新状态。

然后,阐述了工作中的冲突和脚本部分。

如果你不熟悉Mercurial ,那里有一个版本控制教程 。

请注意,Wordpress将所有的新闻提要内容存储在数据库中,所以即使你不做任何改变,也会有很多改变的内容。