在 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
.
我最好的建议 - 不要做这种奇怪的事情 ;)
我已经编写了脚本来 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
.
我最好的建议 - 不要做这种奇怪的事情 ;)