菜单
个人主页
(当前)
写文章
浏览博文
    
搜索
登录
微信公众号
站点链接
半根蓝白个人主页
CSDN
Github
友情链接
摘繁华个人博客
博文目录
#custom-toc-container
git hooks 实践
BGLB0324
2021年11月17日 23:32
最后发布:2021年11月17日 23:32
首发:2021年11月17日 23:32
267
0
博文分类:
杂学
博文标签:
git
githooks
版权声明:本文为博主[BGLB0324]原创文章,遵循
CC 4.0 BY
版权协议,转载请附上原文出处链接和本声明。
本文链接:
http://blog.bglb.work/blog/blog-detail/66
版权
# git hooks 实践 > 一个简单的需求, 每次push之前 都将version 文件的版本号加一, 然后一起push 想到了 hooks, 最后实践过程中发现在 `pre-push`中 不能 git commit 也就是说 `pre-push` 只能 push `git push` 之前的所有commit 就算你在 `pre-push` 中 进行了 commit 操作 但是最终 `pre-push`中的commit 并不会被提交 ## pre-push 尝试 ```shell # pre-push #!/bin/bash increment_versiovn () { declare -a part=( ${1//\./ } ) declare new declare -i carry=1 for (( CNTR=${#part[@]}-1; CNTR>=0; CNTR-=1 )); do len=${#part[CNTR]} new=$((part[CNTR]+carry)) [ ${#new} -gt $len ] && carry=1 || carry=0 [ $CNTR -gt 0 ] && part[CNTR]=${new: -len} || part[CNTR]=${new} done new="${part[*]}" echo -e "${new// /.}" } master_branch='master' current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $current_branch = $master_branch ];then version=$(cat ./version) cat /dev/null > ./version echo $(increment_versiovn $version) > ./version git add ./version git commit ./version -m "update version: $(increment_versiovn $version)" exit 0 else exit 0 fi ``` **上面pre-push hooks 会在 master 分支 push 的时候 将版本号加一, 并且生成一个commit, 但是本次commit并不会被push** ## 自定义脚本 > 既然不能通过 `pre-push` 自动操作,那就只能写一个脚本手动操作一下了 ```shell #!/bin/bash # build_version.sh increment_versiovn () { declare -a part=( ${1//\./ } ) declare new declare -i carry=1 for (( CNTR=${#part[@]}-1; CNTR>=0; CNTR-=1 )); do len=${#part[CNTR]} new=$((part[CNTR]+carry)) [ ${#new} -gt $len ] && carry=1 || carry=0 [ $CNTR -gt 0 ] && part[CNTR]=${new: -len} || part[CNTR]=${new} done new="${part[*]}" echo "${new// /.}" } version=$(cat ./version) cat /dev/null > ./version echo $(increment_versiovn $version) > ./version # 将 "\n" -> "\r\n" 为了去除 windows 下 git 的行尾修改警告 sed -i "s/$/\r/g" ./version git add ./version git commit ./version -m "update version: $(increment_versiovn $version)" git push echo "build version and push successfully!" ``` **在每次push前 执行一下`./build_version.sh` 就可以实现自动增加版本号并且push到远程**
点赞
0
打赏
暂时没有评论
请
登录
后评论
暂时没有评论