Hi, On 2023/12/09 0:04, Daniel Sahlberg wrote:
> Den fre 8 dec. 2023 kl 05:40 skrev Yasuhito FUTATSUKI < > futat...@yf.bsdclub.org>: <snip> >> Then, how about this patch? It at least mailer-t1.sh passed both >> on python=python2.7 and on python=python3.9. >> >> [[[ >> Fix inconsistency in path argment on Config.which_group() >> >> Previously, we call Config.which_group() with path as bytes in >> Commit.__init__() and with path as str in Lock.__init__() and >> in PropChange.__init__(), but Config.which_group handled path >> argment as bytes. To fix it we only use str as path argment on >> Config.wich_group(). >> >> * tools/hook-scripts/mailer/mailer.py >> (Config.which_groups): Treat path as str. >> (Commit.__init__): convert bytes path into str before calling above. >> >> Found by: Ruediger Pluem (rpluem {_AT_} apache.org) >> >> Index: tools/hook-scripts/mailer/mailer.py >> =================================================================== >> --- tools/hook-scripts/mailer/mailer.py (revision 1913728) >> +++ tools/hook-scripts/mailer/mailer.py (working copy) >> @@ -488,7 +488,7 @@ >> # collect the set of groups and the unique sets of params for the >> options >> self.groups = { } >> for path, change in self.changelist: >> - for (group, params) in self.cfg.which_groups(path, log): >> + for (group, params) in self.cfg.which_groups(to_str(path), log): >> # turn the params into a hashable object and stash it away >> param_list = sorted(params.items()) >> # collect the set of paths belonging to this group >> @@ -1486,9 +1486,9 @@ >> "Return the path's associated groups." >> groups = [] >> for group, pattern, exclude_pattern, repos_params, search_logmsg_re >> in self._group_re: >> - match = pattern.match(to_str(path)) >> + match = pattern.match(path) >> if match: >> - if exclude_pattern and exclude_pattern.match(to_str(path)): >> + if exclude_pattern and exclude_pattern.match(path): >> continue >> params = repos_params.copy() >> params.update(match.groupdict()) >> ]]] >> >> Cheers, >> -- >> Yasuhito FUTATSUKI <futat...@yf.bsdclub.org> >> > > This looks good to me! Thanks for the detailed explaination! Thank you for the review. However, it turned out that even with this patch, mailer.py did not work for post-revprop-change hook. It caused exception like [[[ svn: E165001: post-revprop-change hook failed (exit code 1) with output: Traceback (most recent call last): File "/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 1593, in <module> ret = svn.core.run_app(main, cmd, config_fname, repos_dir, File "/usr/local/lib/python3.9/site-packages/svn/core.py", line 324, in run_app return func(application_pool, *args, **kw) File "/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 148, in main return messenger.generate(output, pool) File "/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 601, in generate output.run(self.cfg.get_diff_cmd(group, { File "/home/futatuki/tmp/svn-test/mailer_test/repo-smtpoutput/hooks/mailer.py", line 224, in run self.write_binary(buf) AttributeError: 'SMTPOutput' object has no attribute 'write_binary' ]]] On 1.14.x branch, the patch can be applied clearly, and it worked for post-revprop-change hook. Cheers, -- Yasuhito FUTATSUKI <futat...@poem.co.jp>/<futat...@yf.bsdclub.org>