在Git push and pull上导出和导入数据库

时间:2011-09-02 09:38:13

标签: mysql git mysqldump githooks mysqlimport

我需要我的数据库在两台本地计算机之间同步,而不需要在它们之间使用服务器。经过一些研究,我认为我可以使用Git钩子为我完成任务。

我基本上想要的是在mysqldump上运行git push(并将SQL文件添加到提交中)和mysqlimport上的git pull与远程存储库之间的运行。

我找不到任何特定的钩子。我尝试了pre-commit钩子,但这并未在当前提交中添加SQL文件。然后我尝试了prepare-commit,但没有运气。

有没有人得到这个答案?

2 个答案:

答案 0 :(得分:2)

我会为你的系统编写一个包装器,可能是“commit.php”或“git-ci.sh”之类的东西。然后你可以使用bash或perl或python或php或任何你熟悉的东西,逐个运行每个命令,完成提交。

在尝试添加提交前运行预提交挂钩时遇到类似问题,我建议这样做。此外,下游侧没有“推”或“拉”挂钩(我使用中央存储库,因此如果您有两台机器相互推拉,则可能会有效。)

我有一个双面部署脚本用于我的一个网站,我有一个很长的预提交脚本但是在Web服务器上我有一个这样的包装器取出,然后检查提交,输出报告并给我有关是否与其他服务器合并和rsync等的选项。它取代了可能是主要安全隐患的“拉”钩。

汉斯

答案 1 :(得分:2)

Ben Kulbertis的这个解决方案使用预提交和合并后的git钩子来完成这项工作。像魅力一样工作!

http://ben.kulbertis.org/2011/10/synchronizing-a-mysql-database-with-git-and-git-hooks/