X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2Flibzypp.git;a=blobdiff_plain;f=mkChangelog;h=52cb498d6c1e988f0dd1092a32a3a4cac0a1af99;hp=b3ac21f7b3a4183ea11017a33b0c00a087862ee7;hb=HEAD;hpb=a48cda0635aa1e5cf21d9957ea42b6559c55de7a diff --git a/mkChangelog b/mkChangelog index b3ac21f..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 "" } -git status --porcelain | grep '^[^ ]' | grep -v "$VERSIONFILE\|$CHANGESFILE" && { +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,18 +216,19 @@ 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 ;; [cCsS]) Becho "!!! Store new $CHANGESFILE" mv $TMPFILE $CHANGESFILE + chmod 644 $CHANGESFILE test "$RES" == "s" && { if [ "$LAST_RELEASE" == "$THIS_RELEASE" ]; then @@ -179,12 +236,18 @@ while [ "$RES" == "e" ]; do else Becho "!!! Remember new version $THIS_RELEASE in $VERSIONFILE" sed -i "s/^# LAST RELEASED:.*$/# LAST RELEASED: $THIS_RELEASE ($THIS_COMPAT)/" $VERSIONFILE - git add "$CHANGESFILE" "$VERSIONFILE" \ - && git commit -m "changes $THIS_RELEASE ($THIS_COMPAT)" \ - && git tag -m "tagging $THIS_RELEASE" "$THIS_RELEASE" HEAD - Becho "!!!" - Becho "!!! Do not forget to push the commit and the tag: $(Gecho git push --tags)" - Becho "!!!" + if git add "$CHANGESFILE" "$VERSIONFILE" \ + && git commit -m "changes $THIS_RELEASE ($THIS_COMPAT)" \ + && git tag -m "tagging $THIS_RELEASE" "$THIS_RELEASE" HEAD; then + Becho "!!!" + Becho "!!! Do not forget to push the commit and the tag: $(Gecho git push --tags origin HEAD)" + Becho "!!!" + else + Recho "!!!" + Recho "!!! Commit failed. Check manually. (git reset HEAD~)" + Recho "!!!" + exit 9 + fi fi } ;;