2020-10-28

git hook pre-push bash script validate tag

I'm trying to validate a git tag using the pre-push git hook but whenever I execute git push origin <tag-name> it takes the previous tag as the latest from /refs/tags.

To replicate the issue:

Step 1. git commit 
step 2. git tag V1.0.0-US123-major
step 3. git push origin V1.0.0-US123-major

So when step 3 executes the pre-push script should take "V1.0.0-US123-major" tag and validates against the below regex. If the tag matches with regex then it is a valid tag else abort git push.

#!/bin/sh
read_tag="$(git describe --abbrev=0 --tags)"
if [[ $read_tag =~ (^v[0-9]{1}.[0-9]{1}.[0-9]{1}-[a-zA-Z]+-[a-zA-Z]+$) ]]; then
    echo "matched"
    
else
    echo "not matched"
    exit 1
fi

My expectation is when I use git push origin 2.2.2.2, the pre-push script does not return exit1 rather it accepts the tag and pushing to origin which is not correct.

git push origin 2.2.2
latest tag: v5.5.5-abcd-tues
matched

Can someone help me with this, please?



from Recent Questions - Stack Overflow https://ift.tt/31QNhX4
https://ift.tt/eA8V8J

No comments:

Post a Comment