我正在开发一个 WordPress 网站,在我的笔记本电脑上进行开发,然后通过将 git 推送到服务器来部署更改。这对文件很有用,我想对数据库的内容更改做同样的事情。
我在解决问题的第一次迭代中使用 git hooksmysqldump
在提交前使用转储数据库,然后在结帐后恢复转储。这有效,但每次都会删除并重新创建整个数据库。这是不行的,因为 WordPress 还会自动更改我想要保留的数据库,比如销售哪些产品的记录,所以我不希望在每次结账时都删除并恢复整个事情。
我认为更好的解决方案是在提交期间继续转储数据库,然后在签出时使用一个新工具,该工具读取输出git diff HEAD^
并将其转换为输入到mysql
. 这样,数据库将随着我的更改逐步修补,同时保留其他人(例如 WordPress)所做的更改。例子:
混帐差异:
(83,NULL,550,'TI-99/4A','',0,0,0,0,'',0,0,0),
-(85,NULL,2000,'Banana Jr. 6000','',0,0,0,0,'',0,0,0),
+(85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0),
(88,NULL,150,'Symbolics 3645','',0,0,0,0,'',0,0,0),
转换为 SQL:
DELETE FROM `wp_yak_product` WHERE `post_id`='85';
INSERT INTO `wp_yak_product` VALUES (85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0);
我四处寻找,找不到这样的东西。我正在考虑自己写。
这样的事情存在吗?这是个好主意还是坏主意?