futat...@apache.org wrote on Thu, 14 May 2020 01:46 -0000: > Log: > Use safe bytes literals when set string values in working copy entries. >
If someone reads this log message in a year, I don't think it'd be clear to them what the problem being fixed was. I think it would be useful to be more specific about the circumstances; for example: entries-dump: Escape string-typed attribute values when serializing them as Python string literals. Before this commit, a filesystem node named «foo\bar» (a single, 7-character path component) would cause «e.name = 'foo\bar'» to be emitted. The unescaped backslash would manifest as a test failure or a SyntaxError, depending on the following characters. This was triggered by svnadmin_tests 42 verify_metadata_only under Python 3 on Windows. The reference to "svnadmin_tests 42 verify_metadata_only" is only a placeholder, to be replaced by the correct reference. I specifically used the term "filesystem node" to clarify that «foo\bar» was to be taken as an svn_fspath__* path (where backslash has no special meaning), as opposed to, say, an svn_dirent_* path (where backslash is a delimiter on Windows). > * subversion/tests/cmdline/entries-dump.c > (print_prefix): New function. > (str_value): > - Add argument to specify pool. > - Print human readable value of "value" as is in comment, then set it > as str value by using hex escaped bytes literal. > (entries_dump): Add pool argument to str_value() calls. > (main): > - Print "Entry" class definition as prefix before entry_dump() or > tree_dump() > - Style fix on if statement (using blocks). > (): Add include files for assert() and svn_xml_escape_attr_cstring() > * subversion/tests/cmdline/svntest/main.py > (run_entiresdump, run_entriesdump_tree): Move definition of "Entry" class > into generated code by entries-dump execution. > > Review By: danielsh For future reference, the "${Verb}ed by" phrases in log messages are case-sensitive: tools/dev/contribulyze.py:521:field_re = re.compile( tools/dev/contribulyze.py:522: '^(Patch|Review(ed)?|Suggested|Found|Inspired|Tested|Reported) by:' tools/dev/contribulyze.py:523: '\s*\S.*$') ⋮ tools/dev/contribulyze.py:566: m = field_re.match(line) ⋮ tools/dev/contribulyze.py:604: m = field_re.match(line) This doesn't matter in this case, of course, since the person being credited is already a full committer; however, when crediting people who aren't already full committers, the correct case form should be used so the regexp matches and the contribulyzer pages are updated. (Unless we change the script) Cheers, Daniel