我正在尝试编写一个可以执行的结构脚本git commit
; 但是,如果没有提交,git退出状态为1
.部署脚本将其视为不成功,并退出.我确实想要检测实际的失败提交,所以我不能仅仅给织物一个忽略git commit
失败的问题.如何允许忽略空提交失败,以便部署可以继续,但仍然捕获真正提交失败时导致的错误?
def commit(): local("git add -p && git commit")
Tobi.. 120
通过检查git diff的退出代码事先赶上这个条件?
例如(在shell中):
git add -A git diff-index --quiet HEAD || git commit -m 'bla'
编辑:修正git diff
命令根据霍尔格的评论.
通过检查git diff的退出代码事先赶上这个条件?
例如(在shell中):
git add -A git diff-index --quiet HEAD || git commit -m 'bla'
编辑:修正git diff
命令根据霍尔格的评论.
从git commit
手册页:
--allow-empty
Usually recording a commit that has the exact same tree as its
sole parent commit is a mistake, and the command prevents you
from making such a commit. This option bypassesthe safety, and
is primarily for use by foreign SCM interface scripts.
with settings(warn_only=True): run('git commit ...')
这会导致结构忽略失败.具有不创建空提交的优点.
您可以将其包装在一个额外的层中with hide('warnings'):
以完全抑制输出,否则您将在结构输出中获得提交失败的注释(但fabfile继续执行).