Skip to content

Instantly share code, notes, and snippets.

@ThomDietrich
Last active December 19, 2022 15:23
Show Gist options
  • Save ThomDietrich/7127ca6e45dd4747e86ad9a609e1aeeb to your computer and use it in GitHub Desktop.
Save ThomDietrich/7127ca6e45dd4747e86ad9a609e1aeeb to your computer and use it in GitHub Desktop.
git hook for revision and branch version file
#!/bin/bash
## Automatically generate a file with git branch and revision info
##
## Example:
## [master]v2.0.0-beta-191(a830382)
## Install:
## cp git-create-revisioninfo-hook.sh .git/hooks/post-commit
## cp git-create-revisioninfo-hook.sh .git/hooks/post-checkout
## cp git-create-revisioninfo-hook.sh .git/hooks/post-merge
## chmod +x .git/hooks/post-*
FILENAME='public/gitrevision.txt'
exec 1>&2
branch=`git rev-parse --abbrev-ref HEAD`
longhash=`git log --no-show-signature --pretty=format:'%H' -n 1`
shorthash=`git log --no-show-signature --pretty=format:'%h' -n 1`
revcount=`git log --no-show-signature --oneline | wc -l | tr -d ' '`
latesttag=`git describe --tags --abbrev=0 --always`
#VERSION="[$branch]$latesttag-$revcount($shorthash)"
#VERSION="[$branch]rev$revcount($shorthash)"
JSON="{\"branch\": \"$branch\", \"shorthash\": \"$shorthash\", \"longhash\": \"$longhash\", \"revcount\": \"$revcount\", \"latesttag\": \"$latesttag\"}"
echo $JSON > $FILENAME
@marslo
Copy link

marslo commented Jul 16, 2021

the post-commit hook will do: update ${FILENAME} every time after git commit -am <message>, so the "new" ${FILENAME} actually won't be published into remote repository due to the status is modified (instead of staged).

So, is there any way that using git-hook to modify files in post-commit steps, and put changed file into staged status (for push)?

@ThomDietrich
Copy link
Author

Fyi: Slight bugfix update and added json output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment