在操作系统上:Ubuntu 12.04
我的服务器上有一个drupal部署(实时网站)和一个临时环境(测试网站)。每次我从我的暂存网站中提取更改时,我都希望按照此处的指示自动同步数据库:http://ben.kulbertis.org/2011/10/synchronizing-a-mysql-database-with-git-and-git-hooks/
我使用的设置完全相同(当然,设置和路径取决于我的设置)。
网站报价:
让我们从预提交开始。预提交挂钩将在执行提交之前直接运行脚本。编辑预提交挂钩:
[your editor] /path/to/your/repo/.git/hooks/pre-commit
现在,让我们编写预提交脚本。我们将告诉系统将我们的MySQL数据库转储到我们的git存储库中,并添加它以进行提交。
#!/bin/sh mysqldump -u [mysql user] -p[mysql password] --skip-extended-insert [database] > /path/to> /your/repo/[database].sql cd /path/to/your/repo git add [database].sql
现在,让我们编写合并后脚本。我们将告诉系统将MySQL转储恢复到本地数据库以获取最新的更改。用编辑合并后挂钩
[your editor] /path/to/your/repo/.git/hooks/post-merge
并写:
#!/bin/sh mysql -u [mysql user] -p[mysql password] [database] < /path/to/your/repo/[database].sql
但当我先提交,然后提取时,似乎什么都不会发生。合并后和提交前的挂钩位于部署存储库的挂钩目录中,我从中进行提交和提取。两者都有执行权:chmod +x /path/to/hook
我已经测试了放置在钩子中的命令。它们应该正常工作。
有什么方法可以调试出了什么问题吗?
对于'post-merge',如果运行'git-pull'并且已经是最新的,则'1post-merge'hook将不会运行。
如果您的存储库中没有任何文件发生更改,那么">预提交"挂钩似乎会运行。只要确保脚本中的任何命令后面都没有空格。
这真的很令人失望,我希望看到一个">预拉"钩子和一个"预提交"钩子都能对存储库进行无所谓的更改。
再说一遍,我不是开发人员,所以我可能在这里错过了一些东西。
编辑:只是测试一下,以确保我得到了正确的答案。