13 $(basename $0) [OPTIONS]
16 -h,-?,--help This page.
18 Prepare a new changes file entry preloaded with all commits since the last
19 changes tag and load it into \$EDITOR (vi). If the version file was changed,
20 optionally submitt and tag the new changes. Otherwise simply leave the changes
23 Don't forgett to push created tags as well: git push --tags
43 EMAIL="$(git config --get user.email)"
45 CHANGESFILE=$(ls package/*.changes)
46 test -f "$CHANGESFILE" || errexit "No changes file '$CHANGESFILE'"
48 VERSIONFILE="VERSION.cmake"
49 test -f "$VERSIONFILE" || errexit "No version file '$VERSIONFILE'"
51 function getversion() {
58 /^ *SET *\( *LIBZYPP_MAJOR *"[0-9]+" *\)/ {getnum();major=$0}
59 /^ *SET *\( *LIBZYPP_MINOR *"[0-9]+" *\)/ {getnum();minor=$0}
60 /^ *SET *\( *LIBZYPP_PATCH *"[0-9]+" *\)/ {getnum();patch=$0}
61 /^ *SET *\( *LIBZYPP_COMPATMINOR *"[0-9]+" *\)/ {getnum();compatminor=$0}
62 /^# LAST RELEASED:/ {gsub("^.*RELEASED: *","");gsub(" +$","");gsub(" +\\(.*","");lastrelease=$0}
64 thisrelease = major"."minor"."patch" ("compatminor")"
65 gsub(" \\(.*","",lastrelease)
66 printf "LAST_RELEASE='%s'\n", lastrelease
67 printf "THIS_RELEASE='%s'\n", major"."minor"."patch
68 printf "THIS_COMPAT='%s'\n", compatminor
78 function newchangesentry() {
79 echo "-------------------------------------------------------------------"
80 echo "$(date) - $EMAIL"
82 echo "$(git log --no-merges --pretty=format:'- %s' "$LAST_RELEASE"..HEAD | grep -v 'po.tar.bz2')"
83 test "$LAST_RELEASE" != "$THIS_RELEASE" && {
84 echo "- version $THIS_RELEASE ($THIS_COMPAT)"
89 trap " [ -f \"$TMPFILE\" ] && /bin/rm -f -- \"$TMPFILE\" " 0 1 2 3 13 15
90 { newchangesentry; cat $CHANGESFILE; } >$TMPFILE
93 while [ "$RES" == "e" ]; do
96 awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE
97 read -n 1 -p "(a)bort, (c)ontinue, (s)ubmitt, (e)dit : " RES
105 echo "Store new $CHANGESFILE"
106 mv $TMPFILE $CHANGESFILE
108 test "$RES" == "s" && {
109 if [ "$LAST_RELEASE" == "$THIS_RELEASE" ]; then
110 git add "$CHANGESFILE" && git commit -m "changes"
112 echo "Remember new version $THIS_RELEASE in $VERSIONFILE"
113 sed -i "s/^# LAST RELEASED:.*$/# LAST RELEASED: $THIS_RELEASE ($THIS_COMPAT)/" $VERSIONFILE
114 git add "$CHANGESFILE" "$VERSIONFILE" \
115 && git commit -m "changes $THIS_RELEASE" \
116 && git tag -m "tagging $THIS_RELEASE" "$THIS_RELEASE" HEAD
118 echo "Do not forget to push the commit and the tag: git push --tags"
124 echo "Leave $CHANGESFILE untouched"