我正在使用pre-push
挂钩复制一些文件并使用grunt bump
来升级我的包上的版本号,然后再压缩它。这一切都发生在master
分支上,并且假设因为它是master
的推动,它值得补丁版本增加并拉上我的Chrome扩展程序以包含所有必需的文件。
我遇到的问题是修改版本的时间太晚,以至于没有为钩子提交它以将其包含在推送中,因此我的下一次提交总是在实际标记后面的1个补丁版本。
我在这里有什么解决方案?这是一个单用户项目,所以我不太担心违背钩子的使用方式。一个选项是提交和子推送,然后从此挂钩返回非零以防止推送发生?
#!/bin/sh
PATH=$PATH:/usr/local/bin:/usr/local/sbin
BRANCH="$1"
EXTENSION_PATH=./extension
SCRIPT_PATH=$EXTENSION_PATH/script/
if [ "$branch" == "master" ]
then
# remove the existing script folder; we'll just re-populate it
echo "Removing existing scripts..."
rm -rf $EXTENSION_PATH/script
echo "Making target directory: $SCRIPT_PATH"
mkdir $SCRIPT_PATH
echo "Copying script files..."
cp config.js $SCRIPT_PATH
cp supportportal.js $SCRIPT_PATH
cp -r ./scripts/ $SCRIPT_PATH/scripts/
# bump the version
grunt bump
# commit changes and push here
# >>>
# if on a tag, append that to the filename
VERSION=$(git describe --tags --always)
# get name of the most top folder of git repo directory,
# combine with revision tail
OUTPUT=extension-$VERSION.zip
# building archive
zip -r -X $OUTPUT $EXTENSION_PATH
echo "Done!";
fi
exit 0 #exit 1 instead of 0 to cancel original push?
答案 0 :(得分:0)
使用内容过滤器驱动程序,特别是' clean'而不是像pre-push
或pre-commit
那样使用client-side hook。一,在git commit
上自动运行。
我提议在" Why is the index not updated after doing a git add in a pre-commit
hook?" ...但是这不会捕获最后一次提交(在git describe
中),...因为上次提交正在构建
相反,与this answer中一样,可以使用post-commit
挂钩(如果它在右侧分支中运行)检测版本更改并添加/更新版本文件。