有些卷曲的我无法找到答案。我有一个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
,但任何人都可以了解这种情况的最佳实践吗?
答案 0 :(得分:3)
git commit --allow-empty
这将阻止git中止一个提交,该提交没有改变先前提交中的任何文件。