* [PATCH 0/4] Update release.sh
@ 2025-01-10 11:05 Andrey Albershteyn
2025-01-10 11:05 ` [PATCH 1/4] release.sh: add signing and fix outdated commands Andrey Albershteyn
` (3 more replies)
0 siblings, 4 replies; 14+ messages in thread
From: Andrey Albershteyn @ 2025-01-10 11:05 UTC (permalink / raw)
To: linux-xfs; +Cc: Andrey Albershteyn
To: linux-xfs@vger.kernel.org
The release.sh seems to be last updated in 2015. Every one seems to have
their own script to release. This patchset updates release.sh to the do
the basic stuff as updating version files, committing them, creating
tag, creating release tarball, uploading tarball (optional).
--
Andrey
---
Andrey Albershteyn (4):
release.sh: add signing and fix outdated commands
release.sh: add --kup to upload release tarball to kernel.org
release.sh: update version files make commit optional
release.sh: generate ANNOUNCE email
release.sh | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 148 insertions(+), 12 deletions(-)
---
base-commit: 67297671cbae3043e495312964470d31f4b9e5e7
change-id: 20241111-update-release-13ef17c008a5
Best regards,
--
Andrey Albershteyn <aalbersh@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread* [PATCH 1/4] release.sh: add signing and fix outdated commands 2025-01-10 11:05 [PATCH 0/4] Update release.sh Andrey Albershteyn @ 2025-01-10 11:05 ` Andrey Albershteyn 2025-01-16 21:43 ` Darrick J. Wong 2025-01-10 11:05 ` [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn ` (2 subsequent siblings) 3 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-10 11:05 UTC (permalink / raw) To: linux-xfs; +Cc: Andrey Albershteyn Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> --- release.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/release.sh b/release.sh index 577257a354d442e1cc0a2b9381b11ffbe2f64a71..b15ed610082f34928827ab0547db944cf559cef4 100755 --- a/release.sh +++ b/release.sh @@ -9,6 +9,8 @@ # configure.ac (with new version string) # debian/changelog (with new release entry, only for release version) +set -e + . ./VERSION version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} @@ -16,21 +18,38 @@ date=`date +"%-d %B %Y"` echo "Cleaning up" make realclean +rm -rf "xfsprogs-${version}.tar" \ + "xfsprogs-${version}.tar.gz" \ + "xfsprogs-${version}.tar.asc" \ + "xfsprogs-${version}.tar.sign" echo "Updating CHANGES" sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ mv doc/CHANGES.tmp doc/CHANGES echo "Commiting CHANGES update to git" -git commit -a -m "${version} release" +git commit --all --signoff --message="xfsprogs: Release v${version} + +Update all the necessary files for a v${version} release." echo "Tagging git repository" -git tag -a -m "${version} release" v${version} +git tag --annotate --sign --message="Release v${version}" v${version} echo "Making source tarball" make dist +gunzip -k "xfsprogs-${version}.tar.gz" -#echo "Sign the source tarball" -#gpg --detach-sign xfsprogs-${version}.tar.gz +echo "Sign the source tarball" +gpg \ + --detach-sign \ + --armor \ + "xfsprogs-${version}.tar" -echo "Done. Please remember to push out tags using \"git push --tags\"" +echo "Verify signature" +gpg \ + --verify \ + "xfsprogs-${version}.tar.asc" + +mv "xfsprogs-${version}.tar.asc" "xfsprogs-${version}.tar.sign" + +echo "Done. Please remember to push out tags using \"git push origin v${version}\"" -- 2.47.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/4] release.sh: add signing and fix outdated commands 2025-01-10 11:05 ` [PATCH 1/4] release.sh: add signing and fix outdated commands Andrey Albershteyn @ 2025-01-16 21:43 ` Darrick J. Wong 0 siblings, 0 replies; 14+ messages in thread From: Darrick J. Wong @ 2025-01-16 21:43 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Fri, Jan 10, 2025 at 12:05:06PM +0100, Andrey Albershteyn wrote: > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> Looks reasonable to me! (I like the conversion to long opts, btw) Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> --D > --- > release.sh | 29 ++++++++++++++++++++++++----- > 1 file changed, 24 insertions(+), 5 deletions(-) > > diff --git a/release.sh b/release.sh > index 577257a354d442e1cc0a2b9381b11ffbe2f64a71..b15ed610082f34928827ab0547db944cf559cef4 100755 > --- a/release.sh > +++ b/release.sh > @@ -9,6 +9,8 @@ > # configure.ac (with new version string) > # debian/changelog (with new release entry, only for release version) > > +set -e > + > . ./VERSION > > version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > @@ -16,21 +18,38 @@ date=`date +"%-d %B %Y"` > > echo "Cleaning up" > make realclean > +rm -rf "xfsprogs-${version}.tar" \ > + "xfsprogs-${version}.tar.gz" \ > + "xfsprogs-${version}.tar.asc" \ > + "xfsprogs-${version}.tar.sign" > > echo "Updating CHANGES" > sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ > mv doc/CHANGES.tmp doc/CHANGES > > echo "Commiting CHANGES update to git" > -git commit -a -m "${version} release" > +git commit --all --signoff --message="xfsprogs: Release v${version} > + > +Update all the necessary files for a v${version} release." > > echo "Tagging git repository" > -git tag -a -m "${version} release" v${version} > +git tag --annotate --sign --message="Release v${version}" v${version} > > echo "Making source tarball" > make dist > +gunzip -k "xfsprogs-${version}.tar.gz" > > -#echo "Sign the source tarball" > -#gpg --detach-sign xfsprogs-${version}.tar.gz > +echo "Sign the source tarball" > +gpg \ > + --detach-sign \ > + --armor \ > + "xfsprogs-${version}.tar" > > -echo "Done. Please remember to push out tags using \"git push --tags\"" > +echo "Verify signature" > +gpg \ > + --verify \ > + "xfsprogs-${version}.tar.asc" > + > +mv "xfsprogs-${version}.tar.asc" "xfsprogs-${version}.tar.sign" > + > +echo "Done. Please remember to push out tags using \"git push origin v${version}\"" > > -- > 2.47.0 > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org 2025-01-10 11:05 [PATCH 0/4] Update release.sh Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 1/4] release.sh: add signing and fix outdated commands Andrey Albershteyn @ 2025-01-10 11:05 ` Andrey Albershteyn 2025-01-16 22:22 ` Darrick J. Wong 2025-01-10 11:05 ` [PATCH 3/4] release.sh: update version files make commit optional Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 4/4] release.sh: generate ANNOUNCE email Andrey Albershteyn 3 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-10 11:05 UTC (permalink / raw) To: linux-xfs; +Cc: Andrey Albershteyn Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> --- release.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/release.sh b/release.sh index b15ed610082f34928827ab0547db944cf559cef4..a23adc47efa5163b4e0082050c266481e4051bfb 100755 --- a/release.sh +++ b/release.sh @@ -16,6 +16,30 @@ set -e version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} date=`date +"%-d %B %Y"` +KUP=0 + +help() { + echo "$(basename) - create xfsprogs release" + printf "\t[--kup|-k] upload final tarball with KUP\n" +} + +while [ $# -gt 0 ]; do + case "$1" in + --kup|-k) + KUP=1 + ;; + --help|-h) + help + exit 0 + ;; + *) + >&2 printf "Error: Invalid argument\n" + exit 1 + ;; + esac + shift +done + echo "Cleaning up" make realclean rm -rf "xfsprogs-${version}.tar" \ @@ -52,4 +76,11 @@ gpg \ mv "xfsprogs-${version}.tar.asc" "xfsprogs-${version}.tar.sign" +if [ $KUP -eq 1 ]; then + kup put \ + xfsprogs-${version}.tar.gz \ + xfsprogs-${version}.tar.sign \ + pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz +fi; + echo "Done. Please remember to push out tags using \"git push origin v${version}\"" -- 2.47.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org 2025-01-10 11:05 ` [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn @ 2025-01-16 22:22 ` Darrick J. Wong 2025-01-20 10:59 ` Andrey Albershteyn 0 siblings, 1 reply; 14+ messages in thread From: Darrick J. Wong @ 2025-01-16 22:22 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Fri, Jan 10, 2025 at 12:05:07PM +0100, Andrey Albershteyn wrote: > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > --- > release.sh | 31 +++++++++++++++++++++++++++++++ > 1 file changed, 31 insertions(+) > > diff --git a/release.sh b/release.sh > index b15ed610082f34928827ab0547db944cf559cef4..a23adc47efa5163b4e0082050c266481e4051bfb 100755 > --- a/release.sh > +++ b/release.sh > @@ -16,6 +16,30 @@ set -e > version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > date=`date +"%-d %B %Y"` > > +KUP=0 > + > +help() { > + echo "$(basename) - create xfsprogs release" > + printf "\t[--kup|-k] upload final tarball with KUP\n" > +} > + > +while [ $# -gt 0 ]; do > + case "$1" in > + --kup|-k) > + KUP=1 > + ;; > + --help|-h) > + help > + exit 0 > + ;; > + *) > + >&2 printf "Error: Invalid argument\n" > + exit 1 > + ;; > + esac > + shift > +done > + > echo "Cleaning up" > make realclean > rm -rf "xfsprogs-${version}.tar" \ > @@ -52,4 +76,11 @@ gpg \ > > mv "xfsprogs-${version}.tar.asc" "xfsprogs-${version}.tar.sign" > > +if [ $KUP -eq 1 ]; then > + kup put \ > + xfsprogs-${version}.tar.gz \ > + xfsprogs-${version}.tar.sign \ > + pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz Shouldn't this last argument be "pub/linux/utils/fs/xfs/xfsprogs/" ? also you might want to put a sentence in the commit log for why you want this, e.g. "Add kup support so that the maintainer can push the newly formed release taballs to kernel.org." --D > +fi; > + > echo "Done. Please remember to push out tags using \"git push origin v${version}\"" > > -- > 2.47.0 > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org 2025-01-16 22:22 ` Darrick J. Wong @ 2025-01-20 10:59 ` Andrey Albershteyn 0 siblings, 0 replies; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-20 10:59 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, Andrey Albershteyn On 2025-01-16 14:22:27, Darrick J. Wong wrote: > On Fri, Jan 10, 2025 at 12:05:07PM +0100, Andrey Albershteyn wrote: > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > > --- > > release.sh | 31 +++++++++++++++++++++++++++++++ > > 1 file changed, 31 insertions(+) > > > > diff --git a/release.sh b/release.sh > > index b15ed610082f34928827ab0547db944cf559cef4..a23adc47efa5163b4e0082050c266481e4051bfb 100755 > > --- a/release.sh > > +++ b/release.sh > > @@ -16,6 +16,30 @@ set -e > > version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > > date=`date +"%-d %B %Y"` > > > > +KUP=0 > > + > > +help() { > > + echo "$(basename) - create xfsprogs release" > > + printf "\t[--kup|-k] upload final tarball with KUP\n" > > +} > > + > > +while [ $# -gt 0 ]; do > > + case "$1" in > > + --kup|-k) > > + KUP=1 > > + ;; > > + --help|-h) > > + help > > + exit 0 > > + ;; > > + *) > > + >&2 printf "Error: Invalid argument\n" > > + exit 1 > > + ;; > > + esac > > + shift > > +done > > + > > echo "Cleaning up" > > make realclean > > rm -rf "xfsprogs-${version}.tar" \ > > @@ -52,4 +76,11 @@ gpg \ > > > > mv "xfsprogs-${version}.tar.asc" "xfsprogs-${version}.tar.sign" > > > > +if [ $KUP -eq 1 ]; then > > + kup put \ > > + xfsprogs-${version}.tar.gz \ > > + xfsprogs-${version}.tar.sign \ > > + pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > > Shouldn't this last argument be "pub/linux/utils/fs/xfs/xfsprogs/" ? aha, it should (according to --help). But seems to works with filename. I will change it to path > > also you might want to put a sentence in the commit log for why you > want this, e.g. "Add kup support so that the maintainer can push the > newly formed release taballs to kernel.org." sure -- - Andrey ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 3/4] release.sh: update version files make commit optional 2025-01-10 11:05 [PATCH 0/4] Update release.sh Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 1/4] release.sh: add signing and fix outdated commands Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn @ 2025-01-10 11:05 ` Andrey Albershteyn 2025-01-16 22:33 ` Darrick J. Wong 2025-01-10 11:05 ` [PATCH 4/4] release.sh: generate ANNOUNCE email Andrey Albershteyn 3 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-10 11:05 UTC (permalink / raw) To: linux-xfs; +Cc: Andrey Albershteyn Based on ./VERSION script updates all other files. For ./doc/changelog script asks maintainer to fill it manually as not all changes goes into changelog. --no-commit|-n flag is handy when something got into the version commit and need to be changed manually. Then ./release.sh -c will use fixed history Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> --- release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/release.sh b/release.sh index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755 --- a/release.sh +++ b/release.sh @@ -11,16 +11,33 @@ set -e -. ./VERSION - -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} -date=`date +"%-d %B %Y"` - KUP=0 +COMMIT=1 help() { echo "$(basename) - create xfsprogs release" printf "\t[--kup|-k] upload final tarball with KUP\n" + printf "\t[--no-commit|-n] don't create release commit\n" +} + +update_version() { + echo "Updating version files" + # doc/CHANGES + header="xfsprogs-${version} ($(date +'%d %b %Y'))" + sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES + $EDITOR doc/CHANGES + + # ./configure.ac + CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])" + sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac + + # ./debian/changelog + sed -i "1s/^/\n/" ./debian/changelog + sed -i "1s/^/ -- Nathan Scott <nathans@debian.org> `date -R`\n/" ./debian/changelog + sed -i "1s/^/\n/" ./debian/changelog + sed -i "1s/^/ * New upstream release\n/" ./debian/changelog + sed -i "1s/^/\n/" ./debian/changelog + sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog } while [ $# -gt 0 ]; do @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do --kup|-k) KUP=1 ;; + --no-commit|-n) + COMMIT=0 + ;; --help|-h) help exit 0 @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do shift done +if [ -z "$EDITOR" ]; then + EDITOR=$(command -v vi) +fi + +if [ $COMMIT -eq 1 ]; then + if git diff --exit-code ./VERSION > /dev/null; then + $EDITOR ./VERSION + fi +fi + +. ./VERSION + +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} +date=`date +"%-d %B %Y"` + +if [ $COMMIT -eq 1 ]; then + update_version + + git diff --color=always | less -r + [[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0 + + echo "Commiting new version update to git" + git commit --all --signoff --message="xfsprogs: Release v${version} + +Update all the necessary files for a v${version} release." + + echo "Tagging git repository" + git tag --annotate --sign --message="Release v${version}" v${version} +fi + echo "Cleaning up" make realclean rm -rf "xfsprogs-${version}.tar" \ @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \ "xfsprogs-${version}.tar.asc" \ "xfsprogs-${version}.tar.sign" -echo "Updating CHANGES" -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ - mv doc/CHANGES.tmp doc/CHANGES - -echo "Commiting CHANGES update to git" -git commit --all --signoff --message="xfsprogs: Release v${version} - -Update all the necessary files for a v${version} release." - -echo "Tagging git repository" -git tag --annotate --sign --message="Release v${version}" v${version} echo "Making source tarball" make dist @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz fi; -echo "Done. Please remember to push out tags using \"git push origin v${version}\"" +echo "" +echo "Done. Please remember to push out tags and the branch." +printf "\tgit push origin v${version}\n" +printf "\tgit push origin master\n" -- 2.47.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] release.sh: update version files make commit optional 2025-01-10 11:05 ` [PATCH 3/4] release.sh: update version files make commit optional Andrey Albershteyn @ 2025-01-16 22:33 ` Darrick J. Wong 2025-01-20 11:53 ` Andrey Albershteyn 0 siblings, 1 reply; 14+ messages in thread From: Darrick J. Wong @ 2025-01-16 22:33 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote: > Based on ./VERSION script updates all other files. For > ./doc/changelog script asks maintainer to fill it manually as not > all changes goes into changelog. > > --no-commit|-n flag is handy when something got into the version commit > and need to be changed manually. Then ./release.sh -c will use fixed > history > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > --- > release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- > 1 file changed, 59 insertions(+), 17 deletions(-) > > diff --git a/release.sh b/release.sh > index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755 > --- a/release.sh > +++ b/release.sh > @@ -11,16 +11,33 @@ > > set -e > > -. ./VERSION > - > -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > -date=`date +"%-d %B %Y"` > - > KUP=0 > +COMMIT=1 > > help() { > echo "$(basename) - create xfsprogs release" > printf "\t[--kup|-k] upload final tarball with KUP\n" > + printf "\t[--no-commit|-n] don't create release commit\n" > +} > + > +update_version() { > + echo "Updating version files" > + # doc/CHANGES > + header="xfsprogs-${version} ($(date +'%d %b %Y'))" > + sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES > + $EDITOR doc/CHANGES > + > + # ./configure.ac > + CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])" > + sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac > + > + # ./debian/changelog > + sed -i "1s/^/\n/" ./debian/changelog > + sed -i "1s/^/ -- Nathan Scott <nathans@debian.org> `date -R`\n/" ./debian/changelog > + sed -i "1s/^/\n/" ./debian/changelog > + sed -i "1s/^/ * New upstream release\n/" ./debian/changelog > + sed -i "1s/^/\n/" ./debian/changelog > + sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog > } > > while [ $# -gt 0 ]; do > @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do > --kup|-k) > KUP=1 > ;; > + --no-commit|-n) > + COMMIT=0 > + ;; > --help|-h) > help > exit 0 > @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do > shift > done > > +if [ -z "$EDITOR" ]; then > + EDITOR=$(command -v vi) > +fi I wonder if it would be sensible to try nano as well? Probably most systems have a vi of some kind, or a nano of some kind, but they probably don't lack both. > + > +if [ $COMMIT -eq 1 ]; then > + if git diff --exit-code ./VERSION > /dev/null; then > + $EDITOR ./VERSION > + fi > +fi Er... what does this do? If something has changed VERSION, then we pop it open in an editor before sourcing it? Also, do you want to update debian/changelog at the same time? Normally Debian maintainers use dch(1) to create the changelog entry, but it's basically this: rm -f /tmp/whatever debdate="$(date '+%a, %d %b %Y %T %z')" cat > /tmp/whatever << ENDL xfsprogs ($version) unstable; urgency=low * New upstream release -- Nathan Scott <nathans@debian.org> $debdate ENDL cat debian/changelog >> /tmp/whatever cat /tmp/whatever > debian/changelog rm -f /tmp/whatever (I can also send a patch atop your series to do that, if you'd rather I go mess with the debian stuff) > + > +. ./VERSION > + > +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > +date=`date +"%-d %B %Y"` > + > +if [ $COMMIT -eq 1 ]; then > + update_version > + > + git diff --color=always | less -r > + [[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0 > + > + echo "Commiting new version update to git" > + git commit --all --signoff --message="xfsprogs: Release v${version} > + > +Update all the necessary files for a v${version} release." > + > + echo "Tagging git repository" > + git tag --annotate --sign --message="Release v${version}" v${version} > +fi > + > echo "Cleaning up" > make realclean > rm -rf "xfsprogs-${version}.tar" \ > @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \ > "xfsprogs-${version}.tar.asc" \ > "xfsprogs-${version}.tar.sign" > > -echo "Updating CHANGES" > -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ > - mv doc/CHANGES.tmp doc/CHANGES > - > -echo "Commiting CHANGES update to git" > -git commit --all --signoff --message="xfsprogs: Release v${version} > - > -Update all the necessary files for a v${version} release." > - > -echo "Tagging git repository" > -git tag --annotate --sign --message="Release v${version}" v${version} > > echo "Making source tarball" > make dist > @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > fi; > > -echo "Done. Please remember to push out tags using \"git push origin v${version}\"" > +echo "" > +echo "Done. Please remember to push out tags and the branch." > +printf "\tgit push origin v${version}\n" > +printf "\tgit push origin master\n" I think you can do that all in one push, e.g. git push origin v6.13.0 master --D > > -- > 2.47.0 > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] release.sh: update version files make commit optional 2025-01-16 22:33 ` Darrick J. Wong @ 2025-01-20 11:53 ` Andrey Albershteyn 2025-01-22 1:45 ` Darrick J. Wong 0 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-20 11:53 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, Andrey Albershteyn On 2025-01-16 14:33:18, Darrick J. Wong wrote: > On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote: > > Based on ./VERSION script updates all other files. For > > ./doc/changelog script asks maintainer to fill it manually as not > > all changes goes into changelog. > > > > --no-commit|-n flag is handy when something got into the version commit > > and need to be changed manually. Then ./release.sh -c will use fixed > > history > > > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > > --- > > release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- > > 1 file changed, 59 insertions(+), 17 deletions(-) > > > > diff --git a/release.sh b/release.sh > > index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755 > > --- a/release.sh > > +++ b/release.sh > > @@ -11,16 +11,33 @@ > > > > set -e > > > > -. ./VERSION > > - > > -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > > -date=`date +"%-d %B %Y"` > > - > > KUP=0 > > +COMMIT=1 > > > > help() { > > echo "$(basename) - create xfsprogs release" > > printf "\t[--kup|-k] upload final tarball with KUP\n" > > + printf "\t[--no-commit|-n] don't create release commit\n" > > +} > > + > > +update_version() { > > + echo "Updating version files" > > + # doc/CHANGES > > + header="xfsprogs-${version} ($(date +'%d %b %Y'))" > > + sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES > > + $EDITOR doc/CHANGES > > + > > + # ./configure.ac > > + CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])" > > + sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac > > + > > + # ./debian/changelog > > + sed -i "1s/^/\n/" ./debian/changelog > > + sed -i "1s/^/ -- Nathan Scott <nathans@debian.org> `date -R`\n/" ./debian/changelog > > + sed -i "1s/^/\n/" ./debian/changelog > > + sed -i "1s/^/ * New upstream release\n/" ./debian/changelog > > + sed -i "1s/^/\n/" ./debian/changelog > > + sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog > > } > > > > while [ $# -gt 0 ]; do > > @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do > > --kup|-k) > > KUP=1 > > ;; > > + --no-commit|-n) > > + COMMIT=0 > > + ;; > > --help|-h) > > help > > exit 0 > > @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do > > shift > > done > > > > +if [ -z "$EDITOR" ]; then > > + EDITOR=$(command -v vi) > > +fi > > I wonder if it would be sensible to try nano as well? Probably most > systems have a vi of some kind, or a nano of some kind, but they > probably don't lack both. I added this only to make line below '$EDITOR ./VERSION' spit out some more meaningful error. Probably this would be even better to just change 'command -v vi' to 'vi'. > > > + > > +if [ $COMMIT -eq 1 ]; then > > + if git diff --exit-code ./VERSION > /dev/null; then > > + $EDITOR ./VERSION > > + fi > > +fi > > Er... what does this do? If something has changed VERSION, then we pop > it open in an editor before sourcing it? ops, right, that's should be if edit if not modified. *without --no-commit* Starting from clean repo -> open ./VERSION to let maintaner update version -> update version in all other places -> commit > > Also, do you want to update debian/changelog at the same time? Normally > Debian maintainers use dch(1) to create the changelog entry, but it's > basically this: > > rm -f /tmp/whatever > debdate="$(date '+%a, %d %b %Y %T %z')" > cat > /tmp/whatever << ENDL > xfsprogs ($version) unstable; urgency=low > > * New upstream release > > -- Nathan Scott <nathans@debian.org> $debdate > > ENDL > cat debian/changelog >> /tmp/whatever > cat /tmp/whatever > debian/changelog > rm -f /tmp/whatever > > (I can also send a patch atop your series to do that, if you'd rather I > go mess with the debian stuff) I do, above in update_version() > > > + > > +. ./VERSION > > + > > +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > > +date=`date +"%-d %B %Y"` > > + > > +if [ $COMMIT -eq 1 ]; then > > + update_version > > + > > + git diff --color=always | less -r > > + [[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0 > > + > > + echo "Commiting new version update to git" > > + git commit --all --signoff --message="xfsprogs: Release v${version} > > + > > +Update all the necessary files for a v${version} release." > > + > > + echo "Tagging git repository" > > + git tag --annotate --sign --message="Release v${version}" v${version} > > +fi > > + > > echo "Cleaning up" > > make realclean > > rm -rf "xfsprogs-${version}.tar" \ > > @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \ > > "xfsprogs-${version}.tar.asc" \ > > "xfsprogs-${version}.tar.sign" > > > > -echo "Updating CHANGES" > > -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ > > - mv doc/CHANGES.tmp doc/CHANGES > > - > > -echo "Commiting CHANGES update to git" > > -git commit --all --signoff --message="xfsprogs: Release v${version} > > - > > -Update all the necessary files for a v${version} release." > > - > > -echo "Tagging git repository" > > -git tag --annotate --sign --message="Release v${version}" v${version} > > > > echo "Making source tarball" > > make dist > > @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then > > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > > fi; > > > > -echo "Done. Please remember to push out tags using \"git push origin v${version}\"" > > +echo "" > > +echo "Done. Please remember to push out tags and the branch." > > +printf "\tgit push origin v${version}\n" > > +printf "\tgit push origin master\n" > > I think you can do that all in one push, e.g. > > git push origin v6.13.0 master Yup, seems to work, will change it -- - Andrey ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 3/4] release.sh: update version files make commit optional 2025-01-20 11:53 ` Andrey Albershteyn @ 2025-01-22 1:45 ` Darrick J. Wong 0 siblings, 0 replies; 14+ messages in thread From: Darrick J. Wong @ 2025-01-22 1:45 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Mon, Jan 20, 2025 at 12:53:05PM +0100, Andrey Albershteyn wrote: > On 2025-01-16 14:33:18, Darrick J. Wong wrote: > > On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote: > > > Based on ./VERSION script updates all other files. For > > > ./doc/changelog script asks maintainer to fill it manually as not > > > all changes goes into changelog. > > > > > > --no-commit|-n flag is handy when something got into the version commit > > > and need to be changed manually. Then ./release.sh -c will use fixed > > > history > > > > > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > > > --- > > > release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++-------------- > > > 1 file changed, 59 insertions(+), 17 deletions(-) > > > > > > diff --git a/release.sh b/release.sh > > > index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755 > > > --- a/release.sh > > > +++ b/release.sh > > > @@ -11,16 +11,33 @@ > > > > > > set -e > > > > > > -. ./VERSION > > > - > > > -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > > > -date=`date +"%-d %B %Y"` > > > - > > > KUP=0 > > > +COMMIT=1 > > > > > > help() { > > > echo "$(basename) - create xfsprogs release" > > > printf "\t[--kup|-k] upload final tarball with KUP\n" > > > + printf "\t[--no-commit|-n] don't create release commit\n" > > > +} > > > + > > > +update_version() { > > > + echo "Updating version files" > > > + # doc/CHANGES > > > + header="xfsprogs-${version} ($(date +'%d %b %Y'))" > > > + sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES > > > + $EDITOR doc/CHANGES > > > + > > > + # ./configure.ac > > > + CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])" > > > + sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac > > > + > > > + # ./debian/changelog > > > + sed -i "1s/^/\n/" ./debian/changelog > > > + sed -i "1s/^/ -- Nathan Scott <nathans@debian.org> `date -R`\n/" ./debian/changelog > > > + sed -i "1s/^/\n/" ./debian/changelog > > > + sed -i "1s/^/ * New upstream release\n/" ./debian/changelog > > > + sed -i "1s/^/\n/" ./debian/changelog > > > + sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog > > > } > > > > > > while [ $# -gt 0 ]; do > > > @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do > > > --kup|-k) > > > KUP=1 > > > ;; > > > + --no-commit|-n) > > > + COMMIT=0 > > > + ;; > > > --help|-h) > > > help > > > exit 0 > > > @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do > > > shift > > > done > > > > > > +if [ -z "$EDITOR" ]; then > > > + EDITOR=$(command -v vi) > > > +fi > > > > I wonder if it would be sensible to try nano as well? Probably most > > systems have a vi of some kind, or a nano of some kind, but they > > probably don't lack both. > > I added this only to make line below '$EDITOR ./VERSION' spit out > some more meaningful error. Probably this would be even better to > just change 'command -v vi' to 'vi'. > > > > > > + > > > +if [ $COMMIT -eq 1 ]; then > > > + if git diff --exit-code ./VERSION > /dev/null; then > > > + $EDITOR ./VERSION > > > + fi > > > +fi > > > > Er... what does this do? If something has changed VERSION, then we pop > > it open in an editor before sourcing it? > > ops, right, that's should be if edit if not modified. > > *without --no-commit* Starting from clean repo -> open ./VERSION to > let maintaner update version -> update version in all other places > -> commit > > > > > Also, do you want to update debian/changelog at the same time? Normally > > Debian maintainers use dch(1) to create the changelog entry, but it's > > basically this: > > > > rm -f /tmp/whatever > > debdate="$(date '+%a, %d %b %Y %T %z')" > > cat > /tmp/whatever << ENDL > > xfsprogs ($version) unstable; urgency=low > > > > * New upstream release > > > > -- Nathan Scott <nathans@debian.org> $debdate > > > > ENDL > > cat debian/changelog >> /tmp/whatever > > cat /tmp/whatever > debian/changelog > > rm -f /tmp/whatever > > > > (I can also send a patch atop your series to do that, if you'd rather I > > go mess with the debian stuff) > > I do, above in update_version() Oops, I didn't recognize that it was backwards changelog. --D > > > > > + > > > +. ./VERSION > > > + > > > +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION} > > > +date=`date +"%-d %B %Y"` > > > + > > > +if [ $COMMIT -eq 1 ]; then > > > + update_version > > > + > > > + git diff --color=always | less -r > > > + [[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0 > > > + > > > + echo "Commiting new version update to git" > > > + git commit --all --signoff --message="xfsprogs: Release v${version} > > > + > > > +Update all the necessary files for a v${version} release." > > > + > > > + echo "Tagging git repository" > > > + git tag --annotate --sign --message="Release v${version}" v${version} > > > +fi > > > + > > > echo "Cleaning up" > > > make realclean > > > rm -rf "xfsprogs-${version}.tar" \ > > > @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \ > > > "xfsprogs-${version}.tar.asc" \ > > > "xfsprogs-${version}.tar.sign" > > > > > > -echo "Updating CHANGES" > > > -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \ > > > - mv doc/CHANGES.tmp doc/CHANGES > > > - > > > -echo "Commiting CHANGES update to git" > > > -git commit --all --signoff --message="xfsprogs: Release v${version} > > > - > > > -Update all the necessary files for a v${version} release." > > > - > > > -echo "Tagging git repository" > > > -git tag --annotate --sign --message="Release v${version}" v${version} > > > > > > echo "Making source tarball" > > > make dist > > > @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then > > > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > > > fi; > > > > > > -echo "Done. Please remember to push out tags using \"git push origin v${version}\"" > > > +echo "" > > > +echo "Done. Please remember to push out tags and the branch." > > > +printf "\tgit push origin v${version}\n" > > > +printf "\tgit push origin master\n" > > > > I think you can do that all in one push, e.g. > > > > git push origin v6.13.0 master > > Yup, seems to work, will change it > > -- > - Andrey > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 4/4] release.sh: generate ANNOUNCE email 2025-01-10 11:05 [PATCH 0/4] Update release.sh Andrey Albershteyn ` (2 preceding siblings ...) 2025-01-10 11:05 ` [PATCH 3/4] release.sh: update version files make commit optional Andrey Albershteyn @ 2025-01-10 11:05 ` Andrey Albershteyn 2025-01-16 22:41 ` Darrick J. Wong 3 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-10 11:05 UTC (permalink / raw) To: linux-xfs; +Cc: Andrey Albershteyn Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> --- release.sh | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/release.sh b/release.sh index c34efcbcdfcaf50a08853e65542e8f16214cfb4e..40ecfaff66c3e9f8d794e7543750bd9579b7c6c9 100755 --- a/release.sh +++ b/release.sh @@ -13,11 +13,13 @@ set -e KUP=0 COMMIT=1 +LAST_HEAD="" help() { echo "$(basename) - create xfsprogs release" printf "\t[--kup|-k] upload final tarball with KUP\n" printf "\t[--no-commit|-n] don't create release commit\n" + printf "\t[--last-head|-h] commit of the last release\n" } update_version() { @@ -48,6 +50,10 @@ while [ $# -gt 0 ]; do --no-commit|-n) COMMIT=0 ;; + --last-head|-h) + LAST_HEAD=$2 + shift + ;; --help|-h) help exit 0 @@ -122,7 +128,45 @@ if [ $KUP -eq 1 ]; then pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz fi; +mail_file=$(mktemp) +subject="" +if [ -n "$LAST_HEAD" ]; then + subject="[ANNOUNCE] xfsprogs $(git describe --abbrev=0) released" + + cat << EOF > $mail_file +Hi folks, + +The xfsprogs repository at: + + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git + +has just been updated. + +Patches often get missed, so if your outstanding patches are properly reviewed +on the list and not included in this update, please let me know. + +The for-next branch has also been updated to match the state of master. + +The new head of the master branch is commit: + +$(git log --oneline --format="%H" -1) + +New commits: + +$(git shortlog --format="[%h] %s" $LAST_HEAD..HEAD) + +Code Diffstat: + +$(git diff --stat --summary -C -M $LAST_HEAD..HEAD) +EOF +fi + echo "" -echo "Done. Please remember to push out tags and the branch." +echo "Done." +echo "Please remember to push out tags and the branch." printf "\tgit push origin v${version}\n" printf "\tgit push origin master\n" +if [ -n "$LAST_HEAD" ]; then + echo "Command to send ANNOUNCE email" + printf "\tneomutt linux-xfs@vger.kernel.org -s \"$subject\" -i $mail_file\n" +fi -- 2.47.0 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] release.sh: generate ANNOUNCE email 2025-01-10 11:05 ` [PATCH 4/4] release.sh: generate ANNOUNCE email Andrey Albershteyn @ 2025-01-16 22:41 ` Darrick J. Wong 2025-01-20 12:14 ` Andrey Albershteyn 0 siblings, 1 reply; 14+ messages in thread From: Darrick J. Wong @ 2025-01-16 22:41 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Fri, Jan 10, 2025 at 12:05:09PM +0100, Andrey Albershteyn wrote: > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > --- > release.sh | 46 +++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 45 insertions(+), 1 deletion(-) > > diff --git a/release.sh b/release.sh > index c34efcbcdfcaf50a08853e65542e8f16214cfb4e..40ecfaff66c3e9f8d794e7543750bd9579b7c6c9 100755 > --- a/release.sh > +++ b/release.sh > @@ -13,11 +13,13 @@ set -e > > KUP=0 > COMMIT=1 > +LAST_HEAD="" > > help() { > echo "$(basename) - create xfsprogs release" > printf "\t[--kup|-k] upload final tarball with KUP\n" > printf "\t[--no-commit|-n] don't create release commit\n" > + printf "\t[--last-head|-h] commit of the last release\n" > } > > update_version() { > @@ -48,6 +50,10 @@ while [ $# -gt 0 ]; do > --no-commit|-n) > COMMIT=0 > ;; > + --last-head|-h) > + LAST_HEAD=$2 > + shift > + ;; > --help|-h) > help > exit 0 > @@ -122,7 +128,45 @@ if [ $KUP -eq 1 ]; then > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > fi; > > +mail_file=$(mktemp) > +subject="" > +if [ -n "$LAST_HEAD" ]; then > + subject="[ANNOUNCE] xfsprogs $(git describe --abbrev=0) released" > + > + cat << EOF > $mail_file > +Hi folks, > + > +The xfsprogs repository at: > + > + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git > + > +has just been updated. > + > +Patches often get missed, so if your outstanding patches are properly reviewed > +on the list and not included in this update, please let me know. > + > +The for-next branch has also been updated to match the state of master. > + > +The new head of the master branch is commit: > + > +$(git log --oneline --format="%H" -1) > + > +New commits: > + > +$(git shortlog --format="[%h] %s" $LAST_HEAD..HEAD) > + > +Code Diffstat: > + > +$(git diff --stat --summary -C -M $LAST_HEAD..HEAD) > +EOF > +fi Looks pretty similar to my git-announce tool. ;) > + > echo "" > -echo "Done. Please remember to push out tags and the branch." > +echo "Done." > +echo "Please remember to push out tags and the branch." > printf "\tgit push origin v${version}\n" > printf "\tgit push origin master\n" > +if [ -n "$LAST_HEAD" ]; then > + echo "Command to send ANNOUNCE email" > + printf "\tneomutt linux-xfs@vger.kernel.org -s \"$subject\" -i $mail_file\n" Note: if you put the headers in $mail_file, like this: cat << EOF > $mail_file To: linux-xfs@vger.kernel.org Subject: $subject Hi folks, ... ENDL then you can do: neomutt -H $mail_file to edit the message and send it out. I also wonder if you'd like a copy of my git-contributors script that spits out a list of emails to cc based on the git diff? --D > +fi > > -- > 2.47.0 > > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] release.sh: generate ANNOUNCE email 2025-01-16 22:41 ` Darrick J. Wong @ 2025-01-20 12:14 ` Andrey Albershteyn 2025-01-22 2:02 ` Darrick J. Wong 0 siblings, 1 reply; 14+ messages in thread From: Andrey Albershteyn @ 2025-01-20 12:14 UTC (permalink / raw) To: Darrick J. Wong; +Cc: linux-xfs, Andrey Albershteyn On 2025-01-16 14:41:48, Darrick J. Wong wrote: > On Fri, Jan 10, 2025 at 12:05:09PM +0100, Andrey Albershteyn wrote: > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > > --- > > release.sh | 46 +++++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 45 insertions(+), 1 deletion(-) > > > > diff --git a/release.sh b/release.sh > > index c34efcbcdfcaf50a08853e65542e8f16214cfb4e..40ecfaff66c3e9f8d794e7543750bd9579b7c6c9 100755 > > --- a/release.sh > > +++ b/release.sh > > @@ -13,11 +13,13 @@ set -e > > > > KUP=0 > > COMMIT=1 > > +LAST_HEAD="" > > > > help() { > > echo "$(basename) - create xfsprogs release" > > printf "\t[--kup|-k] upload final tarball with KUP\n" > > printf "\t[--no-commit|-n] don't create release commit\n" > > + printf "\t[--last-head|-h] commit of the last release\n" > > } > > > > update_version() { > > @@ -48,6 +50,10 @@ while [ $# -gt 0 ]; do > > --no-commit|-n) > > COMMIT=0 > > ;; > > + --last-head|-h) > > + LAST_HEAD=$2 > > + shift > > + ;; > > --help|-h) > > help > > exit 0 > > @@ -122,7 +128,45 @@ if [ $KUP -eq 1 ]; then > > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > > fi; > > > > +mail_file=$(mktemp) > > +subject="" > > +if [ -n "$LAST_HEAD" ]; then > > + subject="[ANNOUNCE] xfsprogs $(git describe --abbrev=0) released" > > + > > + cat << EOF > $mail_file > > +Hi folks, > > + > > +The xfsprogs repository at: > > + > > + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git > > + > > +has just been updated. > > + > > +Patches often get missed, so if your outstanding patches are properly reviewed > > +on the list and not included in this update, please let me know. > > + > > +The for-next branch has also been updated to match the state of master. > > + > > +The new head of the master branch is commit: > > + > > +$(git log --oneline --format="%H" -1) > > + > > +New commits: > > + > > +$(git shortlog --format="[%h] %s" $LAST_HEAD..HEAD) > > + > > +Code Diffstat: > > + > > +$(git diff --stat --summary -C -M $LAST_HEAD..HEAD) > > +EOF > > +fi > > Looks pretty similar to my git-announce tool. ;) > > > + > > echo "" > > -echo "Done. Please remember to push out tags and the branch." > > +echo "Done." > > +echo "Please remember to push out tags and the branch." > > printf "\tgit push origin v${version}\n" > > printf "\tgit push origin master\n" > > +if [ -n "$LAST_HEAD" ]; then > > + echo "Command to send ANNOUNCE email" > > + printf "\tneomutt linux-xfs@vger.kernel.org -s \"$subject\" -i $mail_file\n" > > Note: if you put the headers in $mail_file, like this: > > cat << EOF > $mail_file > To: linux-xfs@vger.kernel.org > Subject: $subject > > Hi folks, > ... > ENDL > > then you can do: > > neomutt -H $mail_file Neat, will update this > > to edit the message and send it out. I also wonder if you'd like a copy > of my git-contributors script that spits out a list of emails to cc > based on the git diff? sure, is it small enough to be a part of this file? -- - Andrey ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 4/4] release.sh: generate ANNOUNCE email 2025-01-20 12:14 ` Andrey Albershteyn @ 2025-01-22 2:02 ` Darrick J. Wong 0 siblings, 0 replies; 14+ messages in thread From: Darrick J. Wong @ 2025-01-22 2:02 UTC (permalink / raw) To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn On Mon, Jan 20, 2025 at 01:14:18PM +0100, Andrey Albershteyn wrote: > On 2025-01-16 14:41:48, Darrick J. Wong wrote: > > On Fri, Jan 10, 2025 at 12:05:09PM +0100, Andrey Albershteyn wrote: > > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org> > > > --- > > > release.sh | 46 +++++++++++++++++++++++++++++++++++++++++++++- > > > 1 file changed, 45 insertions(+), 1 deletion(-) > > > > > > diff --git a/release.sh b/release.sh > > > index c34efcbcdfcaf50a08853e65542e8f16214cfb4e..40ecfaff66c3e9f8d794e7543750bd9579b7c6c9 100755 > > > --- a/release.sh > > > +++ b/release.sh > > > @@ -13,11 +13,13 @@ set -e > > > > > > KUP=0 > > > COMMIT=1 > > > +LAST_HEAD="" > > > > > > help() { > > > echo "$(basename) - create xfsprogs release" > > > printf "\t[--kup|-k] upload final tarball with KUP\n" > > > printf "\t[--no-commit|-n] don't create release commit\n" > > > + printf "\t[--last-head|-h] commit of the last release\n" > > > } > > > > > > update_version() { > > > @@ -48,6 +50,10 @@ while [ $# -gt 0 ]; do > > > --no-commit|-n) > > > COMMIT=0 > > > ;; > > > + --last-head|-h) > > > + LAST_HEAD=$2 > > > + shift > > > + ;; > > > --help|-h) > > > help > > > exit 0 > > > @@ -122,7 +128,45 @@ if [ $KUP -eq 1 ]; then > > > pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz > > > fi; > > > > > > +mail_file=$(mktemp) > > > +subject="" > > > +if [ -n "$LAST_HEAD" ]; then > > > + subject="[ANNOUNCE] xfsprogs $(git describe --abbrev=0) released" > > > + > > > + cat << EOF > $mail_file > > > +Hi folks, > > > + > > > +The xfsprogs repository at: > > > + > > > + git://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git > > > + > > > +has just been updated. > > > + > > > +Patches often get missed, so if your outstanding patches are properly reviewed > > > +on the list and not included in this update, please let me know. > > > + > > > +The for-next branch has also been updated to match the state of master. > > > + > > > +The new head of the master branch is commit: > > > + > > > +$(git log --oneline --format="%H" -1) > > > + > > > +New commits: > > > + > > > +$(git shortlog --format="[%h] %s" $LAST_HEAD..HEAD) > > > + > > > +Code Diffstat: > > > + > > > +$(git diff --stat --summary -C -M $LAST_HEAD..HEAD) > > > +EOF > > > +fi > > > > Looks pretty similar to my git-announce tool. ;) > > > > > + > > > echo "" > > > -echo "Done. Please remember to push out tags and the branch." > > > +echo "Done." > > > +echo "Please remember to push out tags and the branch." > > > printf "\tgit push origin v${version}\n" > > > printf "\tgit push origin master\n" > > > +if [ -n "$LAST_HEAD" ]; then > > > + echo "Command to send ANNOUNCE email" > > > + printf "\tneomutt linux-xfs@vger.kernel.org -s \"$subject\" -i $mail_file\n" > > > > Note: if you put the headers in $mail_file, like this: > > > > cat << EOF > $mail_file > > To: linux-xfs@vger.kernel.org > > Subject: $subject > > > > Hi folks, > > ... > > ENDL > > > > then you can do: > > > > neomutt -H $mail_file > > Neat, will update this > > > > > to edit the message and send it out. I also wonder if you'd like a copy > > of my git-contributors script that spits out a list of emails to cc > > based on the git diff? > > sure, is it small enough to be a part of this file? Er.... maybe part of the patch, but it's a python script: --D #!/usr/bin/python3 # List all contributors to a series of git commits. # Copyright(C) 2025 Oracle, All Rights Reserved. # Licensed under GPL 2.0 or later import re import subprocess import io import sys import argparse import email.utils DEBUG = False def backtick(args): '''Generator function that yields lines of a program's stdout.''' if DEBUG: print(' '.join(args)) p = subprocess.Popen(args, stdout = subprocess.PIPE) for line in io.TextIOWrapper(p.stdout, encoding="utf-8"): yield line class find_developers(object): def __init__(self): tags = '%s|%s|%s|%s|%s|%s|%s|%s' % ( 'signed-off-by', 'acked-by', 'cc', 'reviewed-by', 'reported-by', 'tested-by', 'suggested-by', 'reported-and-tested-by') # some tag, a colon, a space, and everything after that regex1 = r'^(%s):\s+(.+)$' % tags self.r1 = re.compile(regex1, re.I) def run(self, lines): addr_list = [] for line in lines: l = line.strip() # emailutils can handle abominations like: # # Reviewed-by: Bogus J. Simpson <bogus@simpson.com> # Reviewed-by: "Bogus J. Simpson" <bogus@simpson.com> # Reviewed-by: bogus@simpson.com # Cc: <stable@vger.kernel.org> # v6.9 # Tested-by: Moo Cow <foo@bar.com> # powerpc m = self.r1.match(l) if not m: continue (name, addr) = email.utils.parseaddr(m.expand(r'\g<2>')) # This last split removes anything after a hash mark, # because someone could have provided an improperly # formatted email address: # # Cc: stable@vger.kernel.org # v6.19+ # # emailutils doesn't seem to catch this, and I can't # fully tell from RFC2822 that this isn't allowed. I # think it is because dtext doesn't forbid spaces or # hash marks. addr_list.append(addr.split('#')[0]) return sorted(set(addr_list)) def main(): parser = argparse.ArgumentParser(description = "List email addresses of contributors to a series of git commits.") parser.add_argument("revspec", nargs = '?', default = None, \ help = "git revisions to process.") parser.add_argument("--delimiter", type = str, default = '\n', \ help = "Separate each email address with this string.") args = parser.parse_args() fd = find_developers() if args.revspec: # read git commits from repo contributors = fd.run(backtick(['git', 'log', '--pretty=medium', args.revspec])) else: # read patch from stdin contributors = fd.run(sys.stdin.readlines()) print(args.delimiter.join(sorted(contributors))) return 0 if __name__ == '__main__': sys.exit(main()) ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2025-01-22 2:02 UTC | newest] Thread overview: 14+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-01-10 11:05 [PATCH 0/4] Update release.sh Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 1/4] release.sh: add signing and fix outdated commands Andrey Albershteyn 2025-01-16 21:43 ` Darrick J. Wong 2025-01-10 11:05 ` [PATCH 2/4] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn 2025-01-16 22:22 ` Darrick J. Wong 2025-01-20 10:59 ` Andrey Albershteyn 2025-01-10 11:05 ` [PATCH 3/4] release.sh: update version files make commit optional Andrey Albershteyn 2025-01-16 22:33 ` Darrick J. Wong 2025-01-20 11:53 ` Andrey Albershteyn 2025-01-22 1:45 ` Darrick J. Wong 2025-01-10 11:05 ` [PATCH 4/4] release.sh: generate ANNOUNCE email Andrey Albershteyn 2025-01-16 22:41 ` Darrick J. Wong 2025-01-20 12:14 ` Andrey Albershteyn 2025-01-22 2:02 ` Darrick J. Wong
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox