这篇文章我受到了《用 git 和 git hooks 解决多地开发时 MySQL 同步问题》这篇文章的启发,再此也感谢jk2K大神。
我也是在开发Web项目时遇到了在公司电脑和个人电脑互相切换时的尴尬:代码可以通过git同步,但数据库同步一直是个麻烦的问题。
git hook 就可以完美的解决了这个问题,git hook 是 git 提供的事件钩子,能被特定的事件触发后调用。简单点来说,当你执行 pull 或 push 命令时,git hook 就会同时自动执行你所预定的脚本。
0x00 前期准备
- mysqldump ,我们首先要为系统增加环境变量,这样我们才能直接执行 mysqldump (我的MySQL版本为5.6) 。mysqldump 就在 MySQL安装目录/bin 下,把这个路径添加到环境变量中即可。
- git 这就不用说了吧……我们是在 Bash 环境下使用 git 。
- 坚果云
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 还是有距离的(用不了怎么不说 →.→),但是我相信这家优秀的公司一定会将这个优秀的产品“坚果云”越做越好。