* [PATCH v4 00/10] Update release.sh
@ 2025-02-13 20:14 Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 01/10] release.sh: add signing and fix outdated commands Andrey Albershteyn
` (9 more replies)
0 siblings, 10 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, 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 do the
basic stuff as updating version files, committing them, creating tag,
creating release tarball, uploading tarball (optional), generate
for-next announce.
--
Andrey
---
Changes in v4:
- Add a few from recently generated files to gitignore
- Drop Cc: trailers in libxfs-apply
- Better handling of trailers with multiple emails/hash marks/not quoted
names
- Link to v3: https://lore.kernel.org/r/20250211-update-release-v3-0-7b80ae52c61f@kernel.org
Changes in v3:
- Add -f to generate for-next ANNOUNCE email
- Update for-next when new released is pushed
- Link to v2: https://lore.kernel.org/r/20250122-update-release-v2-0-d01529db3aa5@kernel.org
Changes in v2:
- Added git-contributors.py from Darrick
- A bit better/shorter commands for maintainer to run
- Link to v1: https://lore.kernel.org/r/20250110-update-release-v1-0-61e40b8ffbac@kernel.org
---
Andrey Albershteyn (10):
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
Add git-contributors script to notify about merges
git-contributors: better handling of hash mark/multiple emails
git-contributors: make revspec required and shebang fix
release.sh: generate ANNOUNCE email
release.sh: add -f to generate for-next update email
libxfs-apply: drop Cc: to stable release list
gitignore: ignore a few newly generated files
.gitignore | 2 +
release.sh | 185 +++++++++++++++++++++++++++++++++++++++++++---
tools/git-contributors.py | 168 +++++++++++++++++++++++++++++++++++++++++
tools/libxfs-apply | 1 +
4 files changed, 344 insertions(+), 12 deletions(-)
---
base-commit: eff7226942a59fc78e8ecd7577657c30ed0cf9a8
change-id: 20241111-update-release-13ef17c008a5
Best regards,
--
Andrey Albershteyn <aalbersh@kernel.org>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v4 01/10] release.sh: add signing and fix outdated commands
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 02/10] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn
` (8 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, Andrey Albershteyn
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
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.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 02/10] release.sh: add --kup to upload release tarball to kernel.org
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 01/10] release.sh: add signing and fix outdated commands Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 03/10] release.sh: update version files make commit optional Andrey Albershteyn
` (7 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, Andrey Albershteyn
Add kup support so that the maintainer can push the newly formed
release tarballs to kernel.org.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
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..b036c3241b3f67bfb2435398e6a17ea4c6a6eebe 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/
+fi;
+
echo "Done. Please remember to push out tags using \"git push origin v${version}\""
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 03/10] release.sh: update version files make commit optional
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 01/10] release.sh: add signing and fix outdated commands Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 02/10] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 04/10] Add git-contributors script to notify about merges Andrey Albershteyn
` (6 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, 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
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
release.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 58 insertions(+), 17 deletions(-)
diff --git a/release.sh b/release.sh
index b036c3241b3f67bfb2435398e6a17ea4c6a6eebe..c3f74bc8dc587a40d867dd22e1e4c6e4aabb8997 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,6 @@ if [ $KUP -eq 1 ]; then
pub/linux/utils/fs/xfs/xfsprogs/
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} master:master master:for-next\n"
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 04/10] Add git-contributors script to notify about merges
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (2 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 03/10] release.sh: update version files make commit optional Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails Andrey Albershteyn
` (5 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, Andrey Albershteyn
Add python script used to collect emails over all changes merged in
the next release.
CC: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
tools/git-contributors.py | 101 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/tools/git-contributors.py b/tools/git-contributors.py
new file mode 100755
index 0000000000000000000000000000000000000000..70ac8abb26c8ce65de336c5ae48abcfee39508b2
--- /dev/null
+++ b/tools/git-contributors.py
@@ -0,0 +1,101 @@
+#!/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():
+ global DEBUG
+
+ 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("--separator", type = str, default = '\n', \
+ help = "Separate each email address with this string.")
+ parser.add_argument('--debug', action = 'store_true', default = False, \
+ help = argparse.SUPPRESS)
+ args = parser.parse_args()
+
+ if args.debug:
+ DEBUG = True
+
+ 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.separator.join(sorted(contributors)))
+ return 0
+
+if __name__ == '__main__':
+ sys.exit(main())
+
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (3 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 04/10] Add git-contributors script to notify about merges Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 21:47 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 06/10] git-contributors: make revspec required and shebang fix Andrey Albershteyn
` (4 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Andrey Albershteyn, Darrick J. Wong
Better handling of hash mark, tags with multiple emails and not
quoted names in emails. See comments in the script.
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
tools/git-contributors.py | 109 ++++++++++++++++++++++++++++++++++++++--------
1 file changed, 90 insertions(+), 19 deletions(-)
diff --git a/tools/git-contributors.py b/tools/git-contributors.py
index 70ac8abb26c8ce65de336c5ae48abcfee39508b2..1a0f2b80e3dad9124b86b29f8507389ef91fe813 100755
--- a/tools/git-contributors.py
+++ b/tools/git-contributors.py
@@ -37,35 +37,106 @@ class find_developers(object):
self.r1 = re.compile(regex1, re.I)
+ # regex to guess if this is a list of multiple addresses.
+ # Not sure why the initial "^.*" is needed here.
+ self.r2 = re.compile(r'^.*,[^,]*@[^@]*,[^,]*@', re.I)
+
+ # regex to match on anything inside a pair of angle brackets
+ self.r3 = re.compile(r'^.*<(.+)>', re.I)
+
+ def _handle_addr(self, addr):
+ # The next split removes everything after an octothorpe (hash
+ # mark), because someone could have provided an improperly
+ # formatted email address:
+ #
+ # Cc: stable@vger.kernel.org # v6.19+
+ #
+ # This, according to my reading of RFC5322, is allowed because
+ # octothorpes can be part of atom text. However, it is
+ # interepreted as if there weren't any whitespace
+ # ("stable@vger.kernel.org#v6.19+"). The grammar allows for
+ # this form, even though this is not a correct Internet domain
+ # name.
+ #
+ # Worse, if you follow the format specified in the kernel's
+ # SubmittingPatches file:
+ #
+ # Cc: <stable@vger.kernel.org> # v6.9
+ #
+ # emailutils will not know how to parse this, and returns empty
+ # strings. I think this is because the angle-addr
+ # specification allows only whitespace between the closing
+ # angle bracket and the CRLF.
+ #
+ # Hack around both problems by ignoring everything after an
+ # octothorpe, no matter where it occurs in the string. If
+ # someone has one in their name or the email address, too bad.
+ a = addr.split('#')[0]
+
+ # emailutils can extract email addresses from headers that
+ # roughly follow the destination address field format:
+ #
+ # Reviewed-by: Bogus J. Simpson <bogus@simpson.com>
+ # Reviewed-by: "Bogus J. Simpson" <bogus@simpson.com>
+ # Reviewed-by: bogus@simpson.com
+ #
+ # Use it to extract the email address, because we don't care
+ # about the display name.
+ (name, addr) = email.utils.parseaddr(a)
+ if DEBUG:
+ print(f'A:{a}:NAME:{name}:ADDR:{addr}:')
+ if len(addr) > 0:
+ return addr
+
+ # If emailutils fails to find anything, let's see if there's
+ # a sequence of characters within angle brackets and hope that
+ # is an email address. This works around things like:
+ #
+ # Reported-by: Xu, Wen <wen.xu@gatech.edu>
+ #
+ # Which should have had the name in quotations because there's
+ # a comma.
+ m = self.r3.match(a)
+ if m:
+ addr = m.expand(r'\g<1>')
+ if DEBUG:
+ print(f"M3:{addr}:M:{m}:")
+ return addr
+
+ # No idea, just spit the whole thing out and hope for the best.
+ return a
+
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
+ # First, does this line match any of the headers we
+ # know about?
m = self.r1.match(l)
if not m:
continue
- (name, addr) = email.utils.parseaddr(m.expand(r'\g<2>'))
+ rightside = 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])
+ n = self.r2.match(rightside)
+ if n:
+ # Break the line into an array of addresses,
+ # delimited by commas, then handle each
+ # address.
+ addrs = rightside.split(',')
+ if DEBUG:
+ print(f"0LINE:{rightside}:ADDRS:{addrs}:M:{n}")
+ for addr in addrs:
+ a = self._handle_addr(addr)
+ addr_list.append(a)
+ else:
+ # Otherwise treat the line as a single email
+ # address.
+ if DEBUG:
+ print(f"1LINE:{rightside}:M:{n}")
+ a = self._handle_addr(rightside)
+ addr_list.append(a)
return sorted(set(addr_list))
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 06/10] git-contributors: make revspec required and shebang fix
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (4 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 21:45 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 07/10] release.sh: generate ANNOUNCE email Andrey Albershteyn
` (3 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Andrey Albershteyn
Without default value script will show help instead of just hanging
waiting for input on stdin.
Shebang fix for system with different python location than the
/usr/bin one.
Cut leading delimiter from the final CC string.
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
tools/git-contributors.py | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/tools/git-contributors.py b/tools/git-contributors.py
index 1a0f2b80e3dad9124b86b29f8507389ef91fe813..01177a9af749776ce4ac982f29f8f9302904d820 100755
--- a/tools/git-contributors.py
+++ b/tools/git-contributors.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# List all contributors to a series of git commits.
# Copyright(C) 2025 Oracle, All Rights Reserved.
@@ -144,8 +144,7 @@ def main():
global DEBUG
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("revspec", help = "git revisions to process.")
parser.add_argument("--separator", type = str, default = '\n', \
help = "Separate each email address with this string.")
parser.add_argument('--debug', action = 'store_true', default = False, \
@@ -160,9 +159,6 @@ def main():
# 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.separator.join(sorted(contributors)))
return 0
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 07/10] release.sh: generate ANNOUNCE email
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (5 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 06/10] git-contributors: make revspec required and shebang fix Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 08/10] release.sh: add -f to generate for-next update email Andrey Albershteyn
` (2 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, Andrey Albershteyn
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
release.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/release.sh b/release.sh
index c3f74bc8dc587a40d867dd22e1e4c6e4aabb8997..696d3ec107ca0cc11ed565734ca7423acfd6d858 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|-l] commit of the last release\n"
}
update_version() {
@@ -40,6 +42,48 @@ update_version() {
sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog
}
+prepare_mail() {
+ branch="$1"
+ mail_file=$(mktemp)
+ if [ -n "$LAST_HEAD" ]; then
+ if [ $branch == "master" ]; then
+ reason="$(git describe --abbrev=0 $branch) released"
+ else
+ reason="for-next updated to $(git log --oneline --format="%h" -1 $branch)"
+ fi;
+ cat << EOF > $mail_file
+To: linux-xfs@vger.kernel.org
+Cc: $(./tools/git-contributors.py $LAST_HEAD..$branch --delimiter ', ')
+Subject: [ANNOUNCE] xfsprogs: $reason
+
+Hi folks,
+
+The xfsprogs $branch branch in 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 $branch branch is commit:
+
+$(git log --oneline --format="%H" -1 $branch)
+
+New commits:
+
+$(git shortlog --format="[%h] %s" $LAST_HEAD..$branch)
+
+Code Diffstat:
+
+$(git diff --stat --summary -C -M $LAST_HEAD..$branch)
+EOF
+ fi
+}
+
while [ $# -gt 0 ]; do
case "$1" in
--kup|-k)
@@ -48,6 +92,10 @@ while [ $# -gt 0 ]; do
--no-commit|-n)
COMMIT=0
;;
+ --last-head|-l)
+ LAST_HEAD=$2
+ shift
+ ;;
--help|-h)
help
exit 0
@@ -122,6 +170,12 @@ if [ $KUP -eq 1 ]; then
pub/linux/utils/fs/xfs/xfsprogs/
fi;
+prepare_mail "master"
+
echo ""
echo "Done. Please remember to push out tags and the branch."
printf "\tgit push origin v${version} master:master master:for-next\n"
+if [ -n "$LAST_HEAD" ]; then
+ echo "Command to send ANNOUNCE email"
+ printf "\tneomutt -H $mail_file\n"
+fi
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 08/10] release.sh: add -f to generate for-next update email
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (6 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 07/10] release.sh: generate ANNOUNCE email Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 10/10] gitignore: ignore a few newly generated files Andrey Albershteyn
9 siblings, 0 replies; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Darrick J. Wong, Andrey Albershteyn
Add --for-next/-f to generate ANNOUNCE email for for-next branch
update. This doesn't require new commit/tarball/tags, so skip it.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
release.sh | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/release.sh b/release.sh
index 696d3ec107ca0cc11ed565734ca7423acfd6d858..b7461e958e6f55f7b8ccf31b53e2d304db11789e 100755
--- a/release.sh
+++ b/release.sh
@@ -14,12 +14,14 @@ set -e
KUP=0
COMMIT=1
LAST_HEAD=""
+FOR_NEXT=0
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|-l] commit of the last release\n"
+ printf "\t[--for-next|-f] generate announce email for for-next update\n"
}
update_version() {
@@ -96,6 +98,9 @@ while [ $# -gt 0 ]; do
LAST_HEAD=$2
shift
;;
+ --for-next|-f)
+ FOR_NEXT=1
+ ;;
--help|-h)
help
exit 0
@@ -108,6 +113,17 @@ while [ $# -gt 0 ]; do
shift
done
+if [ $FOR_NEXT -eq 1 ]; then
+ echo "Push your for-next branch:"
+ printf "\tgit push origin for-next:for-next\n"
+ prepare_mail "for-next"
+ if [ -n "$LAST_HEAD" ]; then
+ echo "Command to send ANNOUNCE email"
+ printf "\tneomutt -H $mail_file\n"
+ fi
+ exit 0
+fi
+
if [ -z "$EDITOR" ]; then
EDITOR=$(command -v vi)
fi
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (7 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 08/10] release.sh: add -f to generate for-next update email Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 21:45 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 10/10] gitignore: ignore a few newly generated files Andrey Albershteyn
9 siblings, 1 reply; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Andrey Albershteyn
These Cc: tags are intended for kernel commits which need to be
backported to stable kernels. Maintainers of stable kernel aren't
interested in xfsprogs syncs.
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
tools/libxfs-apply | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/libxfs-apply b/tools/libxfs-apply
index 097a695f942bb832c2fb1456a0fd8c28c025d1a6..e9672e572d23af296dccfe6499eda9b909f44afd 100755
--- a/tools/libxfs-apply
+++ b/tools/libxfs-apply
@@ -254,6 +254,7 @@ fixup_header_format()
}
/^Date:/ { date_seen=1; next }
/^difflib/ { next }
+ /[Cc]{2}: <?stable@vger.kernel.org>?.*/ { next }
// {
if (date_seen == 0)
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v4 10/10] gitignore: ignore a few newly generated files
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
` (8 preceding siblings ...)
2025-02-13 20:14 ` [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list Andrey Albershteyn
@ 2025-02-13 20:14 ` Andrey Albershteyn
2025-02-13 20:20 ` Darrick J. Wong
9 siblings, 1 reply; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 20:14 UTC (permalink / raw)
To: linux-xfs; +Cc: Andrey Albershteyn
These files are generated from corresponding *.in templates.
Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
.gitignore | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.gitignore b/.gitignore
index 756867124a021b195a10fc2a8a598f16aa6514c4..5d971200d5bfb285e680427de193f81d8ab77c06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,12 +65,14 @@ cscope.*
/mdrestore/xfs_mdrestore
/mkfs/fstyp
/mkfs/mkfs.xfs
+/mkfs/xfs_protofile
/quota/xfs_quota
/repair/xfs_repair
/rtcp/xfs_rtcp
/spaceman/xfs_spaceman
/scrub/xfs_scrub
/scrub/xfs_scrub_all
+/scrub/xfs_scrub_all.timer
/scrub/xfs_scrub_fail
/scrub/*.cron
/scrub/*.service
--
2.47.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v4 10/10] gitignore: ignore a few newly generated files
2025-02-13 20:14 ` [PATCH v4 10/10] gitignore: ignore a few newly generated files Andrey Albershteyn
@ 2025-02-13 20:20 ` Darrick J. Wong
0 siblings, 0 replies; 17+ messages in thread
From: Darrick J. Wong @ 2025-02-13 20:20 UTC (permalink / raw)
To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn
On Thu, Feb 13, 2025 at 09:14:32PM +0100, Andrey Albershteyn wrote:
> These files are generated from corresponding *.in templates.
>
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> .gitignore | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/.gitignore b/.gitignore
> index 756867124a021b195a10fc2a8a598f16aa6514c4..5d971200d5bfb285e680427de193f81d8ab77c06 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -65,12 +65,14 @@ cscope.*
> /mdrestore/xfs_mdrestore
> /mkfs/fstyp
> /mkfs/mkfs.xfs
> +/mkfs/xfs_protofile
> /quota/xfs_quota
> /repair/xfs_repair
> /rtcp/xfs_rtcp
> /spaceman/xfs_spaceman
> /scrub/xfs_scrub
> /scrub/xfs_scrub_all
> +/scrub/xfs_scrub_all.timer
> /scrub/xfs_scrub_fail
> /scrub/*.cron
> /scrub/*.service
>
> --
> 2.47.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list
2025-02-13 20:14 ` [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list Andrey Albershteyn
@ 2025-02-13 21:45 ` Darrick J. Wong
2025-02-13 22:27 ` Andrey Albershteyn
0 siblings, 1 reply; 17+ messages in thread
From: Darrick J. Wong @ 2025-02-13 21:45 UTC (permalink / raw)
To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn
On Thu, Feb 13, 2025 at 09:14:31PM +0100, Andrey Albershteyn wrote:
> These Cc: tags are intended for kernel commits which need to be
> backported to stable kernels. Maintainers of stable kernel aren't
> interested in xfsprogs syncs.
>
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> ---
> tools/libxfs-apply | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/libxfs-apply b/tools/libxfs-apply
> index 097a695f942bb832c2fb1456a0fd8c28c025d1a6..e9672e572d23af296dccfe6499eda9b909f44afd 100755
> --- a/tools/libxfs-apply
> +++ b/tools/libxfs-apply
> @@ -254,6 +254,7 @@ fixup_header_format()
> }
> /^Date:/ { date_seen=1; next }
> /^difflib/ { next }
> + /[Cc]{2}: <?stable@vger.kernel.org>?.*/ { next }
You might want to ignore the angle brackets, because some people do:
Cc: stable@vger.kernel.org
which is valid rfc822 even if SubmittingPatches says not to do that.
Annoyingly, other parts of the documentation lay that out as an example.
/[Cc]{2}:.*stable@vger.kernel.org/ { next }
<shrug>
--D
>
> // {
> if (date_seen == 0)
>
> --
> 2.47.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 06/10] git-contributors: make revspec required and shebang fix
2025-02-13 20:14 ` [PATCH v4 06/10] git-contributors: make revspec required and shebang fix Andrey Albershteyn
@ 2025-02-13 21:45 ` Darrick J. Wong
0 siblings, 0 replies; 17+ messages in thread
From: Darrick J. Wong @ 2025-02-13 21:45 UTC (permalink / raw)
To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn
On Thu, Feb 13, 2025 at 09:14:28PM +0100, Andrey Albershteyn wrote:
> Without default value script will show help instead of just hanging
> waiting for input on stdin.
>
> Shebang fix for system with different python location than the
> /usr/bin one.
>
> Cut leading delimiter from the final CC string.
>
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> ---
> tools/git-contributors.py | 8 ++------
Looks good,
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/tools/git-contributors.py b/tools/git-contributors.py
> index 1a0f2b80e3dad9124b86b29f8507389ef91fe813..01177a9af749776ce4ac982f29f8f9302904d820 100755
> --- a/tools/git-contributors.py
> +++ b/tools/git-contributors.py
> @@ -1,4 +1,4 @@
> -#!/usr/bin/python3
> +#!/usr/bin/env python3
>
> # List all contributors to a series of git commits.
> # Copyright(C) 2025 Oracle, All Rights Reserved.
> @@ -144,8 +144,7 @@ def main():
> global DEBUG
>
> 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("revspec", help = "git revisions to process.")
> parser.add_argument("--separator", type = str, default = '\n', \
> help = "Separate each email address with this string.")
> parser.add_argument('--debug', action = 'store_true', default = False, \
> @@ -160,9 +159,6 @@ def main():
> # 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.separator.join(sorted(contributors)))
> return 0
>
> --
> 2.47.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails
2025-02-13 20:14 ` [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails Andrey Albershteyn
@ 2025-02-13 21:47 ` Darrick J. Wong
0 siblings, 0 replies; 17+ messages in thread
From: Darrick J. Wong @ 2025-02-13 21:47 UTC (permalink / raw)
To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn
On Thu, Feb 13, 2025 at 09:14:27PM +0100, Andrey Albershteyn wrote:
> Better handling of hash mark, tags with multiple emails and not
> quoted names in emails. See comments in the script.
>
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Matches my original git-contributors script, good enough for now
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> tools/git-contributors.py | 109 ++++++++++++++++++++++++++++++++++++++--------
> 1 file changed, 90 insertions(+), 19 deletions(-)
>
> diff --git a/tools/git-contributors.py b/tools/git-contributors.py
> index 70ac8abb26c8ce65de336c5ae48abcfee39508b2..1a0f2b80e3dad9124b86b29f8507389ef91fe813 100755
> --- a/tools/git-contributors.py
> +++ b/tools/git-contributors.py
> @@ -37,35 +37,106 @@ class find_developers(object):
>
> self.r1 = re.compile(regex1, re.I)
>
> + # regex to guess if this is a list of multiple addresses.
> + # Not sure why the initial "^.*" is needed here.
> + self.r2 = re.compile(r'^.*,[^,]*@[^@]*,[^,]*@', re.I)
> +
> + # regex to match on anything inside a pair of angle brackets
> + self.r3 = re.compile(r'^.*<(.+)>', re.I)
> +
> + def _handle_addr(self, addr):
> + # The next split removes everything after an octothorpe (hash
> + # mark), because someone could have provided an improperly
> + # formatted email address:
> + #
> + # Cc: stable@vger.kernel.org # v6.19+
> + #
> + # This, according to my reading of RFC5322, is allowed because
> + # octothorpes can be part of atom text. However, it is
> + # interepreted as if there weren't any whitespace
> + # ("stable@vger.kernel.org#v6.19+"). The grammar allows for
> + # this form, even though this is not a correct Internet domain
> + # name.
> + #
> + # Worse, if you follow the format specified in the kernel's
> + # SubmittingPatches file:
> + #
> + # Cc: <stable@vger.kernel.org> # v6.9
> + #
> + # emailutils will not know how to parse this, and returns empty
> + # strings. I think this is because the angle-addr
> + # specification allows only whitespace between the closing
> + # angle bracket and the CRLF.
> + #
> + # Hack around both problems by ignoring everything after an
> + # octothorpe, no matter where it occurs in the string. If
> + # someone has one in their name or the email address, too bad.
> + a = addr.split('#')[0]
> +
> + # emailutils can extract email addresses from headers that
> + # roughly follow the destination address field format:
> + #
> + # Reviewed-by: Bogus J. Simpson <bogus@simpson.com>
> + # Reviewed-by: "Bogus J. Simpson" <bogus@simpson.com>
> + # Reviewed-by: bogus@simpson.com
> + #
> + # Use it to extract the email address, because we don't care
> + # about the display name.
> + (name, addr) = email.utils.parseaddr(a)
> + if DEBUG:
> + print(f'A:{a}:NAME:{name}:ADDR:{addr}:')
> + if len(addr) > 0:
> + return addr
> +
> + # If emailutils fails to find anything, let's see if there's
> + # a sequence of characters within angle brackets and hope that
> + # is an email address. This works around things like:
> + #
> + # Reported-by: Xu, Wen <wen.xu@gatech.edu>
> + #
> + # Which should have had the name in quotations because there's
> + # a comma.
> + m = self.r3.match(a)
> + if m:
> + addr = m.expand(r'\g<1>')
> + if DEBUG:
> + print(f"M3:{addr}:M:{m}:")
> + return addr
> +
> + # No idea, just spit the whole thing out and hope for the best.
> + return a
> +
> 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
> + # First, does this line match any of the headers we
> + # know about?
> m = self.r1.match(l)
> if not m:
> continue
> - (name, addr) = email.utils.parseaddr(m.expand(r'\g<2>'))
> + rightside = 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])
> + n = self.r2.match(rightside)
> + if n:
> + # Break the line into an array of addresses,
> + # delimited by commas, then handle each
> + # address.
> + addrs = rightside.split(',')
> + if DEBUG:
> + print(f"0LINE:{rightside}:ADDRS:{addrs}:M:{n}")
> + for addr in addrs:
> + a = self._handle_addr(addr)
> + addr_list.append(a)
> + else:
> + # Otherwise treat the line as a single email
> + # address.
> + if DEBUG:
> + print(f"1LINE:{rightside}:M:{n}")
> + a = self._handle_addr(rightside)
> + addr_list.append(a)
>
> return sorted(set(addr_list))
>
>
> --
> 2.47.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list
2025-02-13 21:45 ` Darrick J. Wong
@ 2025-02-13 22:27 ` Andrey Albershteyn
2025-02-13 22:47 ` Darrick J. Wong
0 siblings, 1 reply; 17+ messages in thread
From: Andrey Albershteyn @ 2025-02-13 22:27 UTC (permalink / raw)
To: Darrick J. Wong; +Cc: linux-xfs, Andrey Albershteyn
On 2025-02-13 13:45:41, Darrick J. Wong wrote:
> On Thu, Feb 13, 2025 at 09:14:31PM +0100, Andrey Albershteyn wrote:
> > These Cc: tags are intended for kernel commits which need to be
> > backported to stable kernels. Maintainers of stable kernel aren't
> > interested in xfsprogs syncs.
> >
> > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> > ---
> > tools/libxfs-apply | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/tools/libxfs-apply b/tools/libxfs-apply
> > index 097a695f942bb832c2fb1456a0fd8c28c025d1a6..e9672e572d23af296dccfe6499eda9b909f44afd 100755
> > --- a/tools/libxfs-apply
> > +++ b/tools/libxfs-apply
> > @@ -254,6 +254,7 @@ fixup_header_format()
> > }
> > /^Date:/ { date_seen=1; next }
> > /^difflib/ { next }
> > + /[Cc]{2}: <?stable@vger.kernel.org>?.*/ { next }
>
> You might want to ignore the angle brackets, because some people do:
The ? does that :) One or zero of <>
>
> Cc: stable@vger.kernel.org
>
> which is valid rfc822 even if SubmittingPatches says not to do that.
> Annoyingly, other parts of the documentation lay that out as an example.
>
> /[Cc]{2}:.*stable@vger.kernel.org/ { next }
>
> <shrug>
>
> --D
>
> >
> > // {
> > if (date_seen == 0)
> >
> > --
> > 2.47.2
> >
> >
>
--
- Andrey
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list
2025-02-13 22:27 ` Andrey Albershteyn
@ 2025-02-13 22:47 ` Darrick J. Wong
0 siblings, 0 replies; 17+ messages in thread
From: Darrick J. Wong @ 2025-02-13 22:47 UTC (permalink / raw)
To: Andrey Albershteyn; +Cc: linux-xfs, Andrey Albershteyn
On Thu, Feb 13, 2025 at 11:27:06PM +0100, Andrey Albershteyn wrote:
> On 2025-02-13 13:45:41, Darrick J. Wong wrote:
> > On Thu, Feb 13, 2025 at 09:14:31PM +0100, Andrey Albershteyn wrote:
> > > These Cc: tags are intended for kernel commits which need to be
> > > backported to stable kernels. Maintainers of stable kernel aren't
> > > interested in xfsprogs syncs.
> > >
> > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> > > ---
> > > tools/libxfs-apply | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/tools/libxfs-apply b/tools/libxfs-apply
> > > index 097a695f942bb832c2fb1456a0fd8c28c025d1a6..e9672e572d23af296dccfe6499eda9b909f44afd 100755
> > > --- a/tools/libxfs-apply
> > > +++ b/tools/libxfs-apply
> > > @@ -254,6 +254,7 @@ fixup_header_format()
> > > }
> > > /^Date:/ { date_seen=1; next }
> > > /^difflib/ { next }
> > > + /[Cc]{2}: <?stable@vger.kernel.org>?.*/ { next }
> >
> > You might want to ignore the angle brackets, because some people do:
>
> The ? does that :) One or zero of <>
Aha, I missed that! Thanks for the correction.
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> >
> > Cc: stable@vger.kernel.org
> >
> > which is valid rfc822 even if SubmittingPatches says not to do that.
> > Annoyingly, other parts of the documentation lay that out as an example.
> >
> > /[Cc]{2}:.*stable@vger.kernel.org/ { next }
> >
> > <shrug>
> >
> > --D
> >
> > >
> > > // {
> > > if (date_seen == 0)
> > >
> > > --
> > > 2.47.2
> > >
> > >
> >
>
> --
> - Andrey
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2025-02-13 22:47 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-13 20:14 [PATCH v4 00/10] Update release.sh Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 01/10] release.sh: add signing and fix outdated commands Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 02/10] release.sh: add --kup to upload release tarball to kernel.org Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 03/10] release.sh: update version files make commit optional Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 04/10] Add git-contributors script to notify about merges Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 05/10] git-contributors: better handling of hash mark/multiple emails Andrey Albershteyn
2025-02-13 21:47 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 06/10] git-contributors: make revspec required and shebang fix Andrey Albershteyn
2025-02-13 21:45 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 07/10] release.sh: generate ANNOUNCE email Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 08/10] release.sh: add -f to generate for-next update email Andrey Albershteyn
2025-02-13 20:14 ` [PATCH v4 09/10] libxfs-apply: drop Cc: to stable release list Andrey Albershteyn
2025-02-13 21:45 ` Darrick J. Wong
2025-02-13 22:27 ` Andrey Albershteyn
2025-02-13 22:47 ` Darrick J. Wong
2025-02-13 20:14 ` [PATCH v4 10/10] gitignore: ignore a few newly generated files Andrey Albershteyn
2025-02-13 20:20 ` 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