5

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

我基本上想要的是在远程存储库上运行mysqldumpgit push并将 SQL 文件添加到提交中)并mysqlimportgit pull远程存储库上运行。

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

有人对此有答案吗?

4

2 回答 2

3

Ben Kulbertis 的这个解决方案使用 pre-commit 和 post-merge git 挂钩来完成这项工作。奇迹般有效!

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

于 2014-10-27T13:18:20.070 回答
2

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

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

我的一个网站有一个双面部署脚本,其中我有一个很长的预提交脚本,但在网络服务器上,我有一个这样的包装器,它可以获取、检查提交、输出报告并为我提供有关是否与另一台服务器合并和 rsync 等。它取代了可能是主要安全隐患的“拉”钩。

汉斯

于 2011-09-02T09:57:45.067 回答