有点卷曲,我一直找不到答案。我有一个git预提交钩子,mysqldumps转储数据库,并分阶段提交文件。
我正在为一个项目运行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显示,现在数据库转储已经准备好进行提交了。
如果在运行提交之前有任何其他文件添加到暂存中,则提交可以工作。
显然,我可以轻松地编写一个包装器来完成我想做的事情,然后在所有事情都提前完成之后调用git commit,但是有谁能说明一下这种情况下的最佳实践吗?
发布于 2013-07-29 03:20:22
git commit --allow-empty这将阻止git中止未更改以前提交的任何文件的提交。
https://stackoverflow.com/questions/17915397
复制相似问题