shell获取git最近一次提交信息_击/ Shell脚本函数来验证的Git标签或提交存在,并已经被推到远程仓库...

I wanted to get this question out there to see if I'm doing this right. The following script works except for checking to see if the commit has been pushed to a remote repo which I can't find the right command for:

#!/bin/bash

set -e # fail on first error

verify_git_ref() {

log "Verifying git tag or commit: \"$1\" ...."

if git show-ref --tags --quiet --verify -- "refs/tags/$1"

then

log_success "Git tag \"$1\" verified...."

GIT_TAG_OR_REF=$1

return 0

elif git rev-list $1>/dev/null 2>&1

then

log_success "Git commit \"$1\" verified...."

GIT_TAG_OR_REF=$1

return 0

else

log_error "\"$1\" is not a valid tag or commit, you must use a valid tag or commit in order for this script to continue"

return 1

fi

}

解决方案

Checking whether a remote has a given tag is pretty simple - you should just need to parse the output of git ls-remote --tags to see if it contains your tag.

Checking if a given commit is there is a little trickier. Everything is ref-based. Do you know what ref it should be reachable from? If you do, you should probably just fetch that ref and check locally if the commit is an ancestor of it. That is, fetch master from origin and see if the commit's on origin/master.

You could also try using git push -n to do a dry run of pushing the commit to that branch, and see what happens - if it's a no-op, the commit's already on the branch.

If you don't know what branch it should be on... you'll probably just have to fetch and check them all.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值