当staging为空时强制git commit,但pre-commit hook将添加文件

时间:2013-07-29 02:56:11

标签: git pre-commit-hook pre-commit

有些卷曲的我无法找到答案。我有一个git的预提交钩子,mysqldumps数据库,并分段文件进行提交。

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

这是我正在尝试的基本削减测试:

#!/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表明数据库转储现在已准备好进行提交。

如果我在运行提交之前将任何其他文件添加到暂存,则提交有效。

我显然可以轻松地编写一个包装器来完成我想要的操作,然后在事先上演所有内容之后调用git commit,但任何人都可以了解这种情况的最佳实践吗?

1 个答案:

答案 0 :(得分:3)

git commit --allow-empty

这将阻止git中止一个提交,该提交没有改变先前提交中的任何文件。