在 post-commit 挂钩中压缩文件不起作用

Zipping files in a post-commit hook not working

我已经编写了脚本来 ZIP 最后一次提交 post-commit 挂钩:

#!/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 文件但是.. 是空的,它没有存储更改的文件...
有人看到哪里不好了吗?

据我所知,-o $(git log -1 --pretty=%B).zip 应该指定存档的名称。 %B 向您打印一个提交消息正文文本,其中可能包含空格、换行符和许多其他无法进入文件名并破坏命令行选项的奇怪字符。

不确定您要实现什么目标,所以我不知道有什么改进建议。也许您可以使用 %f(即 已清理的主题行,适用于文件名 )而不是 %B.

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