In previous post — Auto Add Git Commit Message, we saw how to add auto text into commit messages.
Now I want to use a concrete commit message template for all Git commits
. It will be like: $yearnum/$weeknum/$daynum $unix_timestamp | version:
.
Yes, adding date to a commit would be unnecessary since Git already logging date and you can see them with git log
.
However I am going to use this template for my Journal, therefore for lookups this template makes things easy and quick.
For message I am going to use linux's default date
—/bin/date
. You can find below $MESSAGE
that I will add to commits
:
# Nums YNUM=$(date +%y) WNUM=$(date +%U -d "$DATE + 1 week") DAYNUM=$(date +%w) # Unix timestamp UNIX_SEC=$(date +%s) MESSAGE="Add y$YNUM:w$WNUM:d0$DAYNUM $UNIX_SEC | ver:"
To append this every commit message use below code:
COMMIT_MSG_FILE=$1 echo "$MESSAGE" >> $COMMIT_MSG_FILE
So when you git commit
it appends our message and it will be like: "Add y20:w21:d02 1588701600 | ver:"
In this approach there is one thing that I want to improve: Instead of append I want prepend message so it will be on first line.
In order to prepend message to commit we will use sed
and regex
:
sed -i "1s/^/$MESSAGE/" $COMMIT_MSG_FILE
In the end whole solution can be found below:
.git/hooks/prepare-commit-message
#!/bin/sh # # A git hook script to prepare the commit log message. # # It adds below date message to commits: # $yearnum/$weeknum/$daynum $unix_timestamp | version: # # To enable this hook, rename this file to "prepare-commit-msg". # Add it below '.git/hooks/' and make it executable: # chmod +x prepare-commit-msg COMMIT_MSG_FILE=$1 # Nums YNUM=$(date +%y) WNUM=$(date +%U -d "$DATE + 1 week") DAYNUM=$(date +%w) # Unix time in milisecond UNIX_SEC=$(date +%s) MESSAGE="Add y$YNUM:w$WNUM:d0$DAYNUM $UNIX_SEC | ver:" sed -i "1s/^/$MESSAGE/" $COMMIT_MSG_FILE
All done!
Top comments (0)