X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Flibzypp.git;a=blobdiff_plain;f=mkChangelog;h=52cb498d6c1e988f0dd1092a32a3a4cac0a1af99;hp=b67ad944ce0a1e68f7716687491fd99939c45829;hb=HEAD;hpb=f19574ee148eaf7f6af22dd5a1fe987caaf60841 diff --git a/mkChangelog b/mkChangelog index b67ad94..6d4303e 100755 --- a/mkChangelog +++ b/mkChangelog @@ -48,7 +48,13 @@ esac export LC_ALL="" export LANG="en" -EDITOR=${EDITOR:-vi} + +function Edit() +{ + local FILE="$1" + vi "$FILE" + sed -i 's/ \+$//' "$FILE" +} EMAIL="$(git config --get user.email)" @@ -84,16 +90,27 @@ function getversion() { printf "LAST_COMPAT='%s'\n", lastcompat printf "THIS_RELEASE='%s'\n", major"."minor"."patch printf "THIS_COMPAT='%s'\n", compatminor + printf "THIS_MINOR='%s'\n", minor + printf "THIS_PATCH='%s'\n", patch } ' } +function setversion() { + local KEY="$1" + local VAL="$2" + sed -i "s/^ *SET *( *${KEY} .*/SET(${KEY} \"${VAL}\")/" "$VERSIONFILE" +} + function sameVersion() { test "$LAST_RELEASE" == "$THIS_RELEASE" -a "$LAST_COMPAT" == "$THIS_COMPAT" } function getchanges() { - git log --no-merges --pretty=format:'- %s' "$LAST_RELEASE"..HEAD | grep -v 'po.tar.bz2' + git log --no-merges --pretty=format:'@@%B' "$LAST_RELEASE"..HEAD \ + | awk '/^@@/{p=1}/^@@Translated using Weblate/{p=0}(p){print}' \ + | sed '/./{H;$!d};x;/./{s/ *\n */ /g;s/^ *//;s/ *$//;/[^]})!?:.]$/s/$/./;p};d' \ + | fold -s -w 66 | sed '/^@@/{s/^../- /;p;d};s/^/ /' } function newchangesentry() { @@ -107,13 +124,35 @@ function newchangesentry() { echo "" } +function is_fast_forward() { + git fetch + test "$(git rev-list HEAD..origin/$(git name-rev --name-only HEAD) --count)" == "0" +} + +is_fast_forward || { + Recho "!!!" + Recho "!!! Branch is not fast-forward. Pull changes first." + Recho "!!!" + exit 7 +} + git status --porcelain | grep '^[^ ?]' | grep -v "$VERSIONFILE\|$CHANGESFILE" && { Becho "!!! Files other than version and changes are added to the index." Becho "!!! Doing dryrun..." DRYRUN=1 } + +# A tag for $LAST_RELEASE must exist! +eval $(getversion) +git rev-parse -q --verify "$LAST_RELEASE" >/dev/null || { + Recho "!!!" + Recho "!!! There is no LAST_RELEASE tag '$LAST_RELEASE'. Check manually. " + Recho "!!! (git tag -m 'tagging $LAST_RELEASE' '$LAST_RELEASE' ?commit?)" + Recho "!!!" + exit 8 +} + if [ "$DRYRUN" == "1" ]; then - eval $(getversion) newchangesentry sameVersion && { Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)." @@ -121,7 +160,6 @@ if [ "$DRYRUN" == "1" ]; then exit 0 fi - # check version file # while true; do @@ -129,21 +167,39 @@ while true; do # $LAST_COMPAT # $THIS_RELEASE # $THIS_COMPAT - eval $(getversion) sameVersion && { newchangesentry Becho "!!! Version is unchanged at $LAST_RELEASE ($LAST_COMPAT)." - read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (e)dit version: ")" RES + read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (P) patch, (M) minor, (I) incompat minor, (e)dit version [e]: ")" RES echo - case "$RES" in + case "${RES:-e}" in [eE]*) - $EDITOR $VERSIONFILE + Edit $VERSIONFILE + eval $(getversion) continue ;; [cC]) Becho "!!! Leave $VERSIONFILE untouched" break ;; + [P]) + setversion LIBZYPP_PATCH $(($THIS_PATCH + 1)) + eval $(getversion) + continue + ;; + [M]) + setversion LIBZYPP_MINOR $(($THIS_MINOR + 1)) + setversion LIBZYPP_PATCH 0 + eval $(getversion) + continue + ;; + [I]) + setversion LIBZYPP_COMPATMINOR $(($THIS_MINOR + 1)) + setversion LIBZYPP_MINOR $(($THIS_MINOR + 1)) + setversion LIBZYPP_PATCH 0 + eval $(getversion) + continue + ;; *) errexit "aborted" ;; @@ -160,12 +216,12 @@ trap " [ -f \"$TMPFILE\" ] && /bin/rm -f -- \"$TMPFILE\" " 0 1 2 3 13 15 RES=e while [ "$RES" == "e" ]; do - $EDITOR $TMPFILE + Edit $TMPFILE echo awk '{print}/^----------/{n=n+1; if ( n == 2 ) exit 0; }' $TMPFILE - read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit : ")" RES + read -n 1 -p "$(Gecho "(a)bort, (c)ontinue, (s)ubmitt, (e)dit [e]: ")" RES echo - case "$RES" in + case "${RES:-e}" in [eE]*) RES=e ;;