我正在改善适用于WordPress开发项目的git工作流程。通常,在开发内容管理系统时,我会创建一个开发服务器(如http://dev.finalsitename.com),其中包含将在生产版本中使用的自定义帖子类型和分类法。这样,我的客户就可以开始将其内容添加到网站中了。

在他们执行此任务的同时,我通常会在构建外观和自定义程序/插件时在我的本地主机环境上使用。为了确保不覆盖他们的任何更新,通常我会拉下他们数据库的副本并替换我的数据库。但是,有时候我只需要跳到WP管理区域并更改设置或其他一些小的内容即可。 (带有时间戳的)我们网站版本的数据库转储,并包含在根目录中,然后再提交并将其本地分支推回远程存储库。这种方法的问题在于,数据库通常不同步,无法轻松确定要使用的数据库。客户/内容生产者)从事同一个项目?

#1 楼

最简单的选项有3种->


仅使用一个远程数据库,您通过所有备份都连接到该数据库。这样,您只需要担心文件,而不用担心数据库。当然,这需要花几分钟的时间,但是它非常简单,您可以自动化,但更重要的是它将成为版本控制的一部分。
使用自定义更新脚本对实际数据库同步进行版本控制。老实说,我不知道您怎么用git来管理它,因为它只是一个脚本,并不真正知道发生了什么,我知道有第三方的工具可以免费商业化(http:// www。 liquibase.org/)。


#2 楼

如果您需要使数据库完全同步,即。模式和数据,则可以基于备份开发自定义版本控制系统。

或者,如果您想保留生产中的数据但发展其架构,则可以使用自定义解决方案(具有所有架构更改的版本文件),或者使用基于该概念的标准解决方案的migration。您可以在以下stackoverflow线程中找到很多信息:跟踪数据库架构更改的机制。

评论


这里也是一个简单的stackoverflow.com/questions/825787/…

– grm
2012年5月22日在20:28

#3 楼

如果这看起来非常明显,我很抱歉,但是如果所有人都需要具有相同结构的相同数据库副本,那么拥有一台办公室/中央SQL Server并使用它就没有意义吗?如果需要进行实验,请在本地克隆它,但将其保留为实际的权威标准,并仅备份该服务器以及该服务器。具有不同的内容。该代码负责升级和迁移表结构,并且我们可以通过LAN访问彼此在本地计算机上运行的代码的本地安装,因此无需我们共享内容。

输入内容,我们在测试服务器上运行它,然后可以将其导出并导入到实时服务器中,或者如果当前不存在实时实例,则可以直接迁移到生产服务器上。

如果存在点需要将实时测试和WIP数据分开,然后在存储库中使用实时,测试和开发分支