Manage VERSION, CHANGES and git tags with a bash script
It's very common in software projects to use tag versions, and to keep an annotated list of of changes for each version in a file.
This little shell script will automatically suggest a minor version bump number, allowing user override; it will then update a CHANGES file and commit a new tag to git.
See this gist of the bumpversion.sh script.
#!/bin/bash
if [ -f VERSION ]; then
BASE_STRING=`cat VERSION`
BASE_LIST=(`echo $BASE_STRING | tr '.' ' '`)
V_MAJOR=${BASE_LIST[0]}
V_MINOR=${BASE_LIST[1]}
V_PATCH=${BASE_LIST[2]}
echo "Current version : $BASE_STRING"
V_MINOR=$((V_MINOR + 1))
V_PATCH=0
SUGGESTED_VERSION="$V_MAJOR.$V_MINOR.$V_PATCH"
read -p "Enter a version number [$SUGGESTED_VERSION]: " INPUT_STRING
if [ "$INPUT_STRING" = "" ]; then
INPUT_STRING=$SUGGESTED_VERSION
fi
echo "Will set new version to be $INPUT_STRING"
echo $INPUT_STRING > VERSION
echo "Version $INPUT_STRING:" > tmpfile
git log --pretty=format:" - %s" "v$BASE_STRING"...HEAD >> tmpfile
echo "" >> tmpfile
echo "" >> tmpfile
cat CHANGES >> tmpfile
mv tmpfile CHANGES
git add CHANGES VERSION
git commit -m "Version bump to $INPUT_STRING"
git tag -a -m "Tagging version $INPUT_STRING" "v$INPUT_STRING"
git push origin --tags
else
echo "Could not find a VERSION file"
read -p "Do you want to create a version file and start from scratch? [y]" RESPONSE
if [ "$RESPONSE" = "" ]; then RESPONSE="y"; fi
if [ "$RESPONSE" = "Y" ]; then RESPONSE="y"; fi
if [ "$RESPONSE" = "Yes" ]; then RESPONSE="y"; fi
if [ "$RESPONSE" = "yes" ]; then RESPONSE="y"; fi
if [ "$RESPONSE" = "YES" ]; then RESPONSE="y"; fi
if [ "$RESPONSE" = "y" ]; then
echo "0.1.0" > VERSION
echo "Version 0.1.0" > CHANGES
git log --pretty=format:" - %s" >> CHANGES
echo "" >> CHANGES
echo "" >> CHANGES
git add VERSION CHANGES
git commit -m "Added VERSION and CHANGES files, Version bump to v0.1.0"
git tag -a -m "Tagging version 0.1.0" "v0.1.0"
git push origin --tags
fi
fi
Written by Pete Otaqui
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Tags
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#