* [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
* [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
* [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
* [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 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
* 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 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 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 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
* 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 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 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
* 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