After importing one of my projects from Arch, I wanted to add tags that indicated its major releases. Unfortunately, these tags for older releases would show up before the more recent releases in the gitweb output. I searched in vain for a way of backdating tags, and finally decided to make a script to do this for me. Here it is.
This may run into issues if someone uses the "\" character in their tag names, but I didn't want to bother fixing this until it was affirmed that this script would be considered generally useful.
#!/bin/sh # # git-backdate-tag: Change the date of an existing tag, replacing the # tag reference with the newly-generated tag object. # # Usage: git-backdate-tag TAG DATE
usage () {
echo "Usage: git-backdate-tag TAG DATE"
}if [ -n "$3" ]; then
usage
exit 1
elif [ -z "$2" ]; then
usage
exit 1
fi# Set parameters tag="$1" date=$(date --date="$2" +%s)
if [ $? -ne 0 ]; then
echo Could not parse date
exit 1
fi# Replace old date with new date
newtagobj=$(git cat-file tag "$tag" | \
sed -r -e "s/^(tagger .+) ([^ \\n]+) ([^ \\n]+)\$/\1 $date \3/1" | \
git mktag)if [ $? -ne 0 ]; then
echo Could not create replacement tag object
exit 1
fi# Set tag to new tag object git update-ref refs/tags/"$tag" $newtagobj
--
Michael Olson -- FSF Associate Member #652 |
http://mwolson.org/ -- Jabber: mwolson_at_hcoop.net | /` |\ | | |
Sysadmin -- Hobbies: Lisp, GP2X, HCoop | |_] | \| |_|
Projects: Emacs, Muse, ERC, EMMS, ErBot, DVC, Planner |