Checkout Tools
  • last updated 3 hours ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1875921 is being indexed.

Introduce 'svnadmin build-repcache' command.

Implement the 'svnadmin build-repcache' CLI and add an ioctl API for building

the representation cache.

The implementation iterates over revisions in the specified range and recursively

processes the changed nodes, starting from the corresponding revision roots.

For each changed node, it ensures that its data and property representations

exist in the rep-cache. The nodes are processed in the same order as when

committing a transaction (see write_final_rev() function in libsvn_fs_fs/transaction.c),

so that the rep-cache.db files are fully consistent.

* subversion/svnadmin/svnadmin.c

(cmd_table): Add and document the 'build-repcache' command.



build_rep_cache_progress_func): New.

* subversion/include/svn_error_codes.h



* subversion/include/private/svn_fs_fs_private.h



* subversion/libsvn_fs_fs/fs.c

(fs_ioctl): Handle SVN_FS_FS__IOCTL_BUILD_REP_CACHE.

* subversion/libsvn_fs_fs/fs_fs.h

* subversion/libsvn_fs_fs/fs_fs.c

(): Include 'low_level.h'.



ensure_representation_sha1): New. Iterate over revisions and recursively

process the changed nodes. For each changed node, ensure that its data

and property representations exist in the rep-cache.

* subversion/tests/cmdline/

(build_repcache): New test.

(test_list): Add the new test.

* subversion/tests/libsvn_fs_fs/fs-fs-private-test.c

(): Include 'libsvn_fs_fs/rep-cache.h' and 'libsvn_fs/fs-loader.h'.

(build_rep_cache): New test.

(test_funcs): Add the new test.

* tools/client-side/bash_completion

(_svnadmin): Add the 'build-repcache' command.

Patch by: Denis Kovalchuk <>

  1. … 8 more files in changeset.
Fix various typos detected by codespell.

* tools/buildbot/slaves/README, tools/buildbot/slaves/svn-x64-macosx/,

tools/dev/, tools/dev/,

tools/dev/mergegraph/, tools/dev/,

tools/dev/x509-parser.c, tools/dist/, tools/dist/,

tools/dist/, tools/examples/

(): Spelling fixes

* tools/dev/unix-build/Makefile.svn: Run htpasswd with LD_LIBRARY_PATH set.

This fixes a problem on my system where htpasswd could not find the db lib

built by this makefile and therefore failed to load, preventing httpd setup

and serf tests. See dev@ mail thread "Late night unix-build weirdness" on

2020/03/27 archived at:

Reviewed by: stsp

* tools/dist/ Correct & clarify error message reference to --branch option.
* everywhere: Run tools/dev/ to remove

trailing whitespace before we branch 1.14.

  1. … 93 more files in changeset.
* tools/dist/release-lines.yaml: Declare build deps for 1.14 (same as 1.13)

* tools/buildbot/slaves/bb-openbsd/ Detect skipped

Python bindings tests and do not flag the tests as failed if they occur.

Another follow-up to r1875129:

* tools/dev/unix-build/Makefile.svn: Drop a ruby patch which isn't useful.

Follow up to r1875122: Actually fix (some of?) the crashes in Ruby.

* tools/dev/unix-build/Makefile.svn: Add more fixes I came up with while

debugging Ruby crashes. Patches still relevant to current versions of

Ruby (we're still on 2.4) have been submitted upstream.

Also, re-create the ruby patch properly instead of appending to an

existing patch file if already present.

* tools/dev/unix-build/Makefile.svn: Add patch for Ruby which will hopefully

fix the bus errors we have been seeing on the svn-bb-openbsd buildbot.

I haven't yet confirmed that this really fixes the issue but since the

crash happens sporadically there is only one way to find out.

I have also found out that OpenBSD's port of Ruby disables the crashing

code path on sparc64. Which is a bandaid, not a real fix since the problem

could affect other platforms as well.

Follow-up to r1875103:

* tools/buildbot/slaves/bb-openbsd/ Also run 'svn cleanup' on the

main working copy used by the buildbot. Apparently, buildbot won't handle

this step for us.

* tools/buildbot/slaves/bb-openbsd/ Run 'svn cleanup' on the

unix-build working copy. Required to resume building after svn crashed.

Fix handling for non-ascii characters on internal path and stderr

* tools/hook-scripts/

(docstring): Add note to handle non-ascii path and/or stderr output.


+ Decode changed paths as 'utf-8' explicitly on Python 3 and leave them as

('utf-8' encoded) bytes in Python 2.7

+ Decode stderr out message from svnlook as sys.stderr.encoding

(Commands.user_command): Decode stderr out message from user commands as


Use configparser.ConfigParser instead of configparser.SafeConfigParser in py3

On Python 3.2, configparser.Configparser implementation is replaced by one it

was configparser.SafeConfigParser before 3.2, and SafeConfigParser class is

only an alias for compatibility on Python >= 3.2. So we use

ConfigParser.SafeConfigParser in Python 2.7 and configparser.ConfigParser in

Python 3 for the base class of our Config class.

* tools/hook-scripts/

(ConfigParser): New valiable to absorb difference of package and class name

(class Config): Use ConfigParser as base class

Follow up to 1872398: Use 0 for default smtp_port instead of smtplib.SMTP_PORT

* tools/hook-scripts/mailer/ (SMTPOutput.finish):

Use 0 instead of smtplib.SMTP_PORT if general.smtp_port is unspecified.

* tools/hook-scripts/mailer/mailer.conf.example ([general]):

Add comment for smtp_port, it is use 465 for SMTP-over-SSL to connect.

Found by: danielsh

Add new option smtp_port to specifiy the port to connect

* tools/hook-scripts/mailer/ (SMTPOutput.finish):

Specify the port number to connect for SMTP/SMTP_SSL explicitly, by new option


* tools/hook-scripts/mailer/mailer.conf.example ([genral]):

New option 'smtp_port'

* tools/dev/unix-build/Makefile.svn: Pass THREADED to svn's Makefile

causing to invoke svnserve with -T for threaded

mode. See dev@ email thread "Makefile.svn: a dumb question" started

by me on 2019/12/24, archived at:

Patch by: danielsh

* tools/dev/unix-build/README: Fix one typo.

* tools/dev/unix-build/Makefile.svn: Switch to Python 3

Follow-up to r1871347:

* tools/examples/ Don't try to '' as a basename.

No functional change, but the new code is more idiomatic. Support Python 3 in addition to Python 2.

Explicitly specify how to sort lists of Contributor and lists of LogMessage.

In Python 2 instances of those classes are comparable to each other by way of

the __cmp__ member function, but Python 3 does not support that member


An alternative would have been to implement __lt__ and use


* tools/dev/

(functools): Import.

(Contributor.sort_key): New member function.

(LogMessage.sort_key): New member function.

(Contributor.html_out, drop): Specify sorting order.

* tools/dist/ Continue chasing the experimental nature of 'given'

and 'when', through perl5300delta.

Follow up to r1870561: Eliminate loop invariant conditional branch.

* tools/server-side/ (SvnBackup.exec_cmd_unix)

Follow up to r1870204,r1870217,r1870266: Reduce work to communicate to child

* tools/server-side/ (SvnBackup.exec_cmd_unix):

- Use Popen.communicate if output is None.

- Pass stdout of the parent to the child process as stderr directly if

printerr is True, to avoid extra encode/decode on py3 and buffering.

Suggested by: Jun Omae <jun66j5_{AT}>

Follow up to r1870217: Fix typo s/backslashrreplace/backslashreplace/

* tools/server-side/ (SvnBackup.exec_cmd_unix)

Found by: danielsh

Follow up to r1870204: Fix encoding to decode bytes data from stderr

* tools/server-side/ (SvnBackup.exec_cmd_unix):

- Decoding the data from 'svnadmin dump' as 'utf-8' causes crash when

LC_CTYPE is not 'utf-8'. So we use sys.stdout.encoding which is set

by environment instead.

Suggested by: Jun Omae <jun66j5_{AT}>

- remove white space after printing each stderr output

Make work on Python 3

* tools/server-side/

(SvnBackup.exec_cmd_unix, SvnBackup.exec_cmd_nt):

Fix the type of data read from stdout and stderr, to bytes

* tools/dist/ Use yaml.safe_load.

Suggested by: danielsh

Move release-lines metadata out of '' into a separate YAML file.

* tools/dist/release-lines.yaml


* tools/dist/




lts_release_lines): Read from 'release-lines.yaml'.

* tools/dist/ (recommended_release): Remove TODO: didn't make sense.