这篇文章我受到了《用 git 和 git hooks 解决多地开发时 MySQL 同步问题》这篇文章的启发,再此也感谢jk2K大神。

我也是在开发Web项目时遇到了在公司电脑和个人电脑互相切换时的尴尬:代码可以通过git同步,但数据库同步一直是个麻烦的问题。

git hook 就可以完美的解决了这个问题,git hook 是 git 提供的事件钩子,能被特定的事件触发后调用。简单点来说,当你执行 pull 或 push 命令时,git hook 就会同时自动执行你所预定的脚本。

0x00 前期准备

0x01 开始

1、首先编辑 pre-commit 文件,这个钩子是在 commit 之前执行预定脚本。

路径为:

Your Project\.git\hook\pre-commit

内容为:

#!/bin/sh
echo "executing post-commit"
mysqldump --user=MyUsername --password=MyPassword --skip-extended-insert MyDatabase > X:\My Documents\Sync\MyDatabase.sql

2、然后我们再编辑 post-merge,这个钩子是在你合并代码时执行的钩子,将已经同步 sql 的文件导入到数据库中。

路径为:

Your Project\.git\hook\pre-merge

内容为:

#!/bin/sh
echo "executing post-merge"
mysql --user=MyUsername --password=MyPassword --database=MyDatabase > X:\My Documents\Sync\MyDatabase.sql

3、把存放sql文件的目录放进坚果云,在公司与个人电脑之间同步。

0x02 总结

同原文章 jk2K 大神所说,坚果云确实是现在同步盘中的佼佼者,当然跟老大哥 Dropbox 还是有距离的(用不了怎么不说 →.→),但是我相信这家优秀的公司一定会将这个优秀的产品“坚果云”越做越好。