我已经在post-commit
hook:
#!/bin/sh
echo "[post-commit] Commit done!"
exec < /dev/tty
while true; do
read -p "[post-commit] Archive this commit? (Y/n) " yn
if [ "$yn" = "" ]; then
yn='Y'
fi
case $yn in
[Yy] ) exec git archive -o $(git log -1 --pretty=%B).zip $(git rev-parse HEAD) $(git diff --name-only $(git rev-parse HEAD)^..$(git rev-parse HEAD)); break;;
[Nn] ) exit;;
* ) echo "Please answer Yy or Nn for yes or no.";;
esac
done
它创建了一个ZIP文件但是空了,它没有存储更改的文件...
有谁看到哪里不好?
答案 0 :(得分:1)
我看到%f
应该指定档案的名称。 %B
打印出一个提交消息正文文本,该文本可能包含空格,新行和许多其他奇怪的字符,这些字符无法进入文件名并破坏命令行选项。
不确定您要实现的目标,因此我不知道应该提出什么建议来改进它。可能您可以使用{{1}}(即已清理的主题行,适用于文件名)而不是{{1}}。
我最好的建议 - 不要做那些奇怪的事情;)