gbp_retag_commit.sh: check that we are in a debian branch
[debian/scripts.git] / gbp_retag_commit.sh
1 #!/bin/sh
2 #
3 # gbp_retag_commit - retag a revision of a debian package, gbp style
4 #
5 # Copyright (C) 2015  Antonio Ospite <ao2@ao2.it>
6 #
7 # This program is free software. It comes without any warranty, to
8 # the extent permitted by applicable law. You can redistribute it
9 # and/or modify it under the terms of the Do What The Fuck You Want
10 # To Public License, Version 2, as published by Sam Hocevar. See
11 # http://sam.zoy.org/wtfpl/COPYING for more details.
12
13 set -e
14
15 usage() {
16   echo "usage: $(basename $0) <COMMIT_ID>";
17 }
18
19 HASH="$1"
20 git cat-file -e "${HASH}^{commit}" || { usage 1>&2; exit 1; }
21
22 CHANGELOG_HEADER="$(git show $HASH:debian/changelog | head -1)"
23 if [ "x$CHANGELOG_HEADER" = "x" ];
24 then
25   echo "Check that the active branch is a debian branch" 1>&2
26   exit 1
27 fi
28
29 # TODO: give a warning or an error if this is is an UNRELEASED version?
30
31 PACKAGE=$(echo "$CHANGELOG_HEADER" | cut -d ' ' -f 1)
32 VERSION=$(echo "$CHANGELOG_HEADER" | cut -d '(' -f 2 | cut -d ')' -f 1 )
33
34 # Use the same default values of gbp-buildpackage
35 TAG="debian/$VERSION"
36 TAG_MESSAGE="$PACKAGE Debian release $VERSION"
37
38 # TODO: maybe drop the older $TAG if it exists?
39
40 GIT_COMMITTER_DATE="$(git show --format=%aD $HASH | head -1)" \
41   git tag -a "$TAG" $HASH -m "$TAG_MESSAGE"