[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1884427 - in /subversion/trunk/tools/hook-scripts/mailer: mailer.py tests/mailer-t1.output tests/mailer-tweak.py

From: Stefan Sperling <stsp_at_elego.de>
Date: Mon, 28 Dec 2020 16:49:59 +0100

On Tue, Dec 15, 2020 at 07:47:59PM +0900, Yasuhito FUTATSUKI wrote:
> As far as I read the code again, it seems this is already support
> locales other than C/C.UTF-8 if mailer.py is kicked with appropriate
> LC_CTYPE environment. The REPOS-PATH argment comes from sys.argv[2]
> already decoded in file system encoding (i.e. encoding corresponding
> to LC_CTYPE) and Python encodes it if access to file system. On the
> other hand, svn.repos.open() wrapper function accepts str and encode
> it to UTF-8 string, as the svn_repos_open() C API expects.
>
> Then I overlooked sys.argv[x] and cmd_args[x] in main() are
> already str.
>
> Perhaps it needs (although the last hunk is not nessesary):

Yes, indeed. If python already encodes arguments to strings then this
patch looks correct to me. It also works as expected in my testing.

> [[[
> Index: tools/hook-scripts/mailer/mailer.py
> ===================================================================
> --- tools/hook-scripts/mailer/mailer.py (revision 1884434)
> +++ tools/hook-scripts/mailer/mailer.py (working copy)
> @@ -88,10 +88,10 @@
> messenger = Commit(pool, cfg, repos)
> elif cmd == 'propchange' or cmd == 'propchange2':
> revision = int(cmd_args[0])
> - author = cmd_args[1].decode('utf-8')
> - propname = cmd_args[2].decode('utf-8')
> + author = cmd_args[1]
> + propname = cmd_args[2]
> if cmd == 'propchange2' and cmd_args[3]:
> - action = cmd_args[3].decode('utf-8')
> + action = cmd_args[3]
> else:
> action = 'A'
> repos = Repository(repos_dir, revision, pool)
> @@ -103,7 +103,7 @@
> })
> messenger = PropChange(pool, cfg, repos, author, propname, action)
> elif cmd == 'lock' or cmd == 'unlock':
> - author = cmd_args[0].decode('utf-8')
> + author = cmd_args[0]
> repos = Repository(repos_dir, 0, pool) ### any old revision will do
> # Override the repos revision author with the author of the lock/unlock
> repos.author = author
> @@ -1510,7 +1510,7 @@
> usage()
>
> cmd = sys.argv[1]
> - repos_dir = svn.core.svn_path_canonicalize(sys.argv[2])
> + repos_dir = svn.core.svn_path_canonicalize(sys.argv[2].encode('utf-8'))
> repos_dir = repos_dir.decode('utf-8')
> try:
> expected_args = cmd_list[cmd]
> ]]]
Received on 2020-12-28 16:50:21 CET

This is an archived mail posted to the Subversion Dev mailing list.