在提交后挂钩中压缩文件无法正常工作

时间:2017-12-11 10:07:26

标签: git zip sh githooks

我已经在post-commit hook:

上写了ZIP最后提交的脚本
#!/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文件但是空了,它没有存储更改的文件...
有谁看到哪里不好?

1 个答案:

答案 0 :(得分:1)

我看到%f应该指定档案的名称。 %B打印出一个提交消息正文文本,该文本可能包含空格,新行和许多其他奇怪的字符,这些字符无法进入文件名并破坏命令行选项。

不确定您要实现的目标,因此我不知道应该提出什么建议来改进它。可能您可以使用{{1}}(即已清理的主题行,适用于文件名)而不是{{1}}。

我最好的建议 - 不要做那些奇怪的事情;)