我将使用脚本.git/hooks/pre-commit来拍摄MySQL数据库和其他项目文件的快照。以下是内容:
创建了一个新的转储文件,但是git告诉我:
然后,如果我再次运行相同的提交命令,它就能工作了:
然后,如果我再次运行相同的命令,就会回到“没有要提交的内容”。这种模式无限循环——工作、不工作、工作、不工作。它不是基于时间的(我尝试过立即提交和等待10分钟)。Mysqldump肯定会更新.sql文件(在文件末尾附近以hh:mm:ss格式对它们进行时间戳)。
如果我逐行运行脚本(包括首先cd到hooks目录以完全模拟运行脚本),每次都会有一个新的提交。如果我将其放入hooks或repo根目录中的可执行文件,并从命令行执行它,然后运行提交命令,它每次都能正常工作。只有每隔一次,而且只有在从pre-commit内部运行时才不能正常工作。
是什么原因导致了这种奇怪的行为?
#!/bin/bash
mysqldump -u user -ppassword --skip-extended-insert dbname > /path/to/repo/dbname.sql
cd /mnt/hoste/Storage/Code/test-repo/
git add /path/to/repo/dbname.sql
如果我运行:
git commit -am "Message"
创建了一个新的转储文件,但是git告诉我:
nothing to commit (working directory clean)
然后,如果我再次运行相同的提交命令,它就能工作了:
1 file changed, 1 insertion(+), 1 deletion(-)
然后,如果我再次运行相同的命令,就会回到“没有要提交的内容”。这种模式无限循环——工作、不工作、工作、不工作。它不是基于时间的(我尝试过立即提交和等待10分钟)。Mysqldump肯定会更新.sql文件(在文件末尾附近以hh:mm:ss格式对它们进行时间戳)。
如果我逐行运行脚本(包括首先cd到hooks目录以完全模拟运行脚本),每次都会有一个新的提交。如果我将其放入hooks或repo根目录中的可执行文件,并从命令行执行它,然后运行提交命令,它每次都能正常工作。只有每隔一次,而且只有在从pre-commit内部运行时才不能正常工作。
是什么原因导致了这种奇怪的行为?