display: expose status_win and opt_tty
[tig.git] / tools / release.sh
blob85f782c35de8fce455484016be0aa08e19783183
1 #!/bin/sh
3 # Script for preparing a release or updating the release branch.
4 # Usage: $0 version
6 # Copyright (c) 2009-2014 Jonas Fonseca <jonas.fonseca@gmail.com>
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License as
10 # published by the Free Software Foundation; either version 2 of
11 # the License, or (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 set -e
19 set -x
21 VERSION="$1"
23 TAG="tig-$VERSION"
24 TITLE="$TAG\n$(echo "$TAG" | sed 's/./-/g')"
25 NEWS="NEWS.adoc"
27 # Require a clean repository.
28 git update-index --refresh
29 git diff-index --quiet HEAD
31 if test -n "$VERSION"; then
32 # Get a sane starting point.
33 test "$(git symbolic-ref HEAD)" = "refs/heads/master" ||
34 git checkout master
36 # Update files which should reference the version.
37 sed -i "s/VERSION\s=\s[0-9]\+[.][0-9]\+/VERSION = $VERSION/" Makefile
38 perl -pi -e 's/^tig master.*/@@TITLE@@/ms' "$NEWS"
39 perl -pi -e "s/^@@TITLE@@.*/$TITLE/" "$NEWS"
41 # Check for typos.
42 make spell-check
44 # Last review.
45 $EDITOR "$NEWS"
47 # Create release commit and tag.
48 git commit -a -m "$TAG"
49 git tag -s -m "tig version $VERSION" "$TAG"
51 # Prepare release announcement file.
52 ./tools/announcement.sh "$TAG" > "$TAG.txt"
54 # Set version for the Makefile
55 export DIST_VERSION="$VERSION"
56 else
57 # Get meaningful version for the update message.
58 TAG="$(git describe)"
61 # Update the release branch.
62 git checkout release
63 HEAD="$(git rev-parse release)"
64 git merge master
65 if test -n "$(git rev-list -1 release ^$HEAD)"; then
66 make distclean doc-man doc-html sysconfdir=++SYSCONFDIR++
67 git commit -a -m "Update for version $TAG"
70 if test -n "$VERSION"; then
71 # Create the tarball.
72 make dist
75 # Done.
76 git checkout master