暂存为空时强制git提交,但预提交挂钩将添加文件

暂存为空时强制git提交,但预提交挂钩将添加文件,git,pre-commit-hook,pre-commit,Git,Pre Commit Hook,Pre Commit,有点卷曲,我还没找到答案。我有一个git的预提交钩子,mysqldump数据库,并准备提交文件 我正在为一个项目运行Drupal,因此,相当多的配置是通过接口完成的,并存储在数据库中,显然,我热衷于捕获版本控制中的时间点里程碑 以下是我正在尝试的基本精简测试: #!/bin/bash #commit database as point-in-time SITE_PATH="/data/site.com" cd $SITE_PATH FILE_NAME="db/site.sql" $(mysq

有点卷曲,我还没找到答案。我有一个git的预提交钩子,mysqldump数据库,并准备提交文件

我正在为一个项目运行Drupal,因此,相当多的配置是通过接口完成的,并存储在数据库中,显然,我热衷于捕获版本控制中的时间点里程碑

以下是我正在尝试的基本精简测试:

#!/bin/bash

#commit database as point-in-time
SITE_PATH="/data/site.com"
cd $SITE_PATH

FILE_NAME="db/site.sql"
$(mysqldump --skip-extended-insert --skip-dump-date db_name > $FILE_NAME)

#add changed file to commit
$(git add $FILE_NAME)
问题是,如果没有要暂存的文件,则会运行预提交脚本,但提交未完成。如果之后运行
echo$?
git commit
将返回退出代码1(因为最初在暂存中没有文件)。运行
git status
显示db转储现在已准备好提交

如果在运行提交之前将任何其他文件添加到暂存中,则提交可以工作

显然,我可以很容易地编写一个包装器,实现我想要的功能,然后在所有事情都提前准备好之后,在最后调用
git commit
,但是有人能解释一下这种情况下的最佳实践吗

git commit --allow-empty
这将阻止git中止一个提交,而该提交没有更改上一次提交的任何文件


这将阻止git中止一个提交,而该提交没有更改上一次提交的任何文件。

太好了,干杯!我一定是错过了这个,很可能是在男性条目中寻找“力量”关键词。太好了,干杯!我一定是错过了这个,很可能是在男人入口中寻找“力量”关键词。