当GIT中接收一推,所述post-receive
钩被调用和传递关于以后被输送的每个参考文献的标准输入数据,在<old-sha> <new-sha> <ref-name>
行,像这样:
e1f5c274e296f1c5148161f9d4e5eb43a6743e54 1eea3f51cf926c3710f8fa4a06f503041c4597f0 refs/heads/master
当分支被删除时,<new-sha>
项全部为零,就像这样:
6b239c481453c7fc2513b02e8aa0cd9c1ffa25cb 0000000000000000000000000000000000000000 refs/heads/foo
所以,你可以使用逻辑诸如调整post-receive
钩来检测它(并阻止这个分支从触发部署):
#!/bin/sh -
while read OLDSHA NEWSHA REF ; do
if [ "$NEWSHA" = "0000000000000000000000000000000000000000" ]; then
# This ref has been deleted! Respond appropriately.
fi
done
请记住,单次推送也可以包含更新多个分支!您可能需要累积应部署的一组分支,该分支以适当的前缀开始并且具有非零值NEWSHA
。
这是缺少的部分,非常感谢! –