summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-05-03 15:01:47 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2018-05-03 15:21:24 +0200
commit01dd570de80ef6838c77e03677444916abdc5863 (patch)
treeb63fb2d1c969e6e30871c67fd9134a309ca8e46a
parent0b0f9088591fafe332c3e85fc9563960c66a2910 (diff)
osmo-release.sh: Always generate entire commit changelog
Before this commit, for library projects (containing LIBVERSION in some Makefile), the entire commit list was not stored into the changelog, but only a few lines from TODO-RELEASE files. This is a bad approach for several reasons. First, because that file was only aimed at containing API/ABI breaks, and not the full relevant changeset (like bugfixes, new features, etc.). Second, because it relies on every developer making API/ABI changes to remember to store the change in there during commit break time. Let's instead always store the entire commit list in changelog, and let's use TODO-RELEASE only as a list of hints for the maintainer to help him evaluate how LIBVERSION needs to be bumped for each library. Other tools such as osmo-abi-check.git can be used to help with the process of decission too. Let's take the opportunity too to only commit stuff already added to the staging area, as it proved easier to manage from my personal experinece making latest releases. Change-Id: Ibf662173ce2b4ff3966e9ad5f56c65dfb13607ff
-rw-r--r--TODO-RELEASE4
-rwxr-xr-xosmo-release.sh28
2 files changed, 13 insertions, 19 deletions
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 16496d68..146ab333 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -1,6 +1,6 @@
# When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install
-# according to https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
-# In short:
+# according to https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
+# In short: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
# LIBVERSION=c:r:a
# If the library source code has changed at all since the last update, then increment revision: c:r + 1:a.
# If any interfaces have been added, removed, or changed since the last update: c + 1:0:0.
diff --git a/osmo-release.sh b/osmo-release.sh
index 0e850235..3b50ded8 100755
--- a/osmo-release.sh
+++ b/osmo-release.sh
@@ -11,7 +11,7 @@ BUMPVER=`command -v bumpversion`
NEW_VER=`bumpversion --list --current-version $VERSION $REL --allow-dirty | awk -F '=' '{ print $2 }'`
LIBVERS=`git grep -n LIBVERSION | grep '=' | grep am | grep -v LDFLAGS`
-MAKEMOD=`git diff -GLIBVERSION --stat | grep Makefile.am`
+MAKEMOD=`git diff --cached -GLIBVERSION --stat | grep Makefile.am`
ISODATE=`date -I`
if [ "z$BUMPVER" = "z" ]; then
@@ -26,28 +26,22 @@ fi
echo "Releasing $VERSION -> $NEW_VER..."
-if [ "z$LIBVERS" = "z" ]; then
- gbp dch --debian-tag='%(version)s' --auto --meta --git-author --multimaint-merge --ignore-branch --new-version="$NEW_VER"
-else
- echo "You should NOT be doing this unless you've read and understood following article:"
- echo "https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info"
- grep -v '#' TODO-RELEASE | sed 's/\t\+/: /g' > TODO-RELEASE.entries
- if [ "$(wc -l <TODO-RELEASE.entries 2>/dev/null)" -eq "0" ]; then
- rm TODO-RELEASE.entries
- echo "TODO-RELEASE must contain at least one line with change descriptions"
- exit 1
- fi
- grep '#' TODO-RELEASE > TODO-RELEASE.clean
- mv TODO-RELEASE.clean TODO-RELEASE
+if [ "z$LIBVERS" != "z" ]; then
if [ "z$MAKEMOD" = "z" ]; then
echo "Before releasing, please modify some of the libversions: $LIBVERS"
+ echo "You should NOT be doing this unless you've read and understood following article:"
+ echo "https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info"
exit 1
fi
- xargs -a TODO-RELEASE.entries -r -d'\n' -I entry dch -m -v $NEW_VER "entry"
- rm TODO-RELEASE.entries
+ if [ -f "TODO-RELEASE" ]; then
+ grep '#' TODO-RELEASE > TODO-RELEASE.clean
+ mv TODO-RELEASE.clean TODO-RELEASE
+ git add TODO-RELEASE
+ fi
fi
+gbp dch --debian-tag='%(version)s' --auto --meta --git-author --multimaint-merge --ignore-branch --new-version="$NEW_VER"
dch -r -m --distribution "unstable" ""
-git add -u
+git add debian/changelog
bumpversion --current-version $VERSION $REL --tag --commit --tag-name $NEW_VER --allow-dirty
git tag -s $NEW_VER -f -m "Release v$NEW_VER on $ISODATE."
echo "Release $NEW_VER prepared, tagged and signed."