Initial import
authorAntonio Ospite <ao2@ao2.it>
Wed, 18 Nov 2015 14:04:04 +0000 (15:04 +0100)
committerAntonio Ospite <ao2@ao2.it>
Wed, 18 Nov 2015 14:04:04 +0000 (15:04 +0100)
gbp_retag_commit.sh [new file with mode: 0755]

diff --git a/gbp_retag_commit.sh b/gbp_retag_commit.sh
new file mode 100755 (executable)
index 0000000..371cecb
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# gbp_retag_commit - retag a revision of a debian package, gbp style
+#
+# Copyright (C) 2015  Antonio Ospite <ao2@ao2.it>
+#
+# This program is free software. It comes without any warranty, to
+# the extent permitted by applicable law. You can redistribute it
+# and/or modify it under the terms of the Do What The Fuck You Want
+# To Public License, Version 2, as published by Sam Hocevar. See
+# http://sam.zoy.org/wtfpl/COPYING for more details.
+
+set -e
+
+usage() {
+  echo "usage: $(basename $0) <COMMIT_ID>";
+}
+
+HASH="$1"
+
+git cat-file -e "${HASH}^{commit}" || { usage 1>&2; exit 1; }
+
+BRANCH_NAME="$(git rev-parse --abbrev-ref HEAD)"
+
+CHANGELOG_HEADER="$(git show $HASH:debian/changelog | head -1)"
+
+# TODO: give a warning or an error if this is is an UNRELEASED version?
+
+PACKAGE=$(echo "$CHANGELOG_HEADER" | cut -d ' ' -f 1)
+VERSION=$(echo "$CHANGELOG_HEADER" | cut -d '(' -f 2 | cut -d ')' -f 1 )
+
+TAG="$BRANCH_NAME/$VERSION"
+TAG_MESSAGE="$PACKAGE Debian release $VERSION"
+
+# TODO: maybe drop the older $TAG if it exists?
+
+GIT_COMMITTER_DATE="$(git show --format=%aD $HASH | head -1)" \
+  git tag -a "$TAG" $HASH -m "$TAG_MESSAGE"