Last active
April 26, 2024 04:31
-
-
Save kalpeshsingh/e7682478b8927700c714f12e37f0837e to your computer and use it in GitHub Desktop.
A pre-push git hook that notify Amazon Chime group
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
branch="$(git rev-parse --abbrev-ref HEAD)" | |
# get computer name to append in Chime message | |
username=$USER | |
# a branch name where you want to prevent git push. In this case, it's "master" | |
if [ "$branch" = "master" ]; then | |
echo "You can't commit directly to '"${branch}"' branch" # webstorm or intellij will show this as popup | |
curl -X POST "<Chime-Webhook-URL>" -H "Content-Type:application/json" --data '{"Content": "@All 🚧 '@"${username}"' trying to push code to '"${branch}"'. \n Please note that commit is not blocked but it is discouraged to push code directly to '"${branch}"'."}' | |
exit 1 # if you remove this line then it won't block push but send message to group and on command line | |
fi | |
# Things you need to do - | |
# 1. Copy above code | |
# 2. Go to your project/.git/hooks | |
# 3. Copy pre-push.sample and rename it to pre-push | |
# 4. Paste the above code | |
# 5. Make this file executable - $ chmod +x .git/hooks/pre-commit | |
# 6. Voila! Now you will see your push is failing in "master" branch | |
# 7. If you use Amazon Chime then create a webhook URL and replace the in cURL or add code which sends message to Slack or | |
# your preferred communication channel | |
# ---------------------AMAZON CHIME DOCS----------------------- # | |
# Amazon Chime Webhook documentation | |
# https://docs.aws.amazon.com/chime/latest/ug/webhooks.html |
Great! How do I allow this to a specific user?
You can use username
variable and put a if condition to match that user.
It will then work for that specific user only.
Thanks a lot for this 👍
👍
Thanks a lot, this really helps me in sorting out my mistakes
Hi, thanks for this gist.
In your hook, you're getting branch but I wanted to also check which tags are available. Is there any way to achieve this?
Thanks in advance!
I would suggest replacing the hardcoded master
branch name with the default branch. Reason being that many repos made the switch to rename master
to main
or something else completely.
#!/bin/sh
protected_branch="$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')"
branch="$(git rev-parse --abbrev-ref HEAD)"
# get computer name to append in Chime message
username=$USER
# a branch name where you want to prevent git push. In this case, it's "master"
if [ "$branch" = "$protected_branch" ]; then
echo "You can't commit directly to '"${branch}"' branch" # webstorm or intellij will show this as popup
curl -X POST "<Chime-Webhook-URL>" -H "Content-Type:application/json" --data '{"Content": "@All 🚧 '@"${username}"' trying to push code to '"${branch}"'. \n Please note that commit is not blocked but it is discouraged to push code directly to '"${branch}"'."}'
exit 1 # if you remove this line then it won't block push but send message to group and on command line
fi
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Great! How do I allow this to a specific user?