Checkout Tools
  • last updated 54 mins ago
Constraints: committers
Constraints: files
Constraints: dates

Changeset 1874850 is being indexed.

Happy (not-now-so-)new year, 2020!


* subversion/libsvn_subr/version.c (svn_version_extended):

Bump copyright year to 2020.

Add the shelving v2 implementation from Subversion 1.11, as an alternative

to the shelving v3 implementation from Subversion 1.12.

They have substantially different pros and cons, so it is beneficial for the

user to be able to choose.

Make the shelving CLI version selectable by an environment variable:

env. var. not set => shelving v3 enabled

SVN_EXPERIMENTAL_COMMANDS=shelf3 => shelving v3 enabled

SVN_EXPERIMENTAL_COMMANDS=shelf2 => shelving v2 enabled


* subversion/svn/svn.c

Enable shelving v3 or v2 or neither, depending on the environment variable


* subversion/include/private/svn_client_shelf2.h

* subversion/libsvn_client/shelf2.c

* subversion/svn/shelf2-cmd.c

* subversion/svn/shelf2-cmd.h

* subversion/tests/cmdline/

New files, with contents copied from svn 1.11, with minor adjustments.

Move the experimental shelving API declarations into a dedicated header


* subversion/include/private/svn_client_shelf.h

New file.

[This file was missed in the previous commit, r1874632.]

Move the experimental shelving API declarations into a dedicated header


A step towards decoupling the experimental shelving CLI from the main CLI.

* subversion/include/private/svn_client_shelf.h

New file.

[This file was missed in this commit, and added in r1874633.]

* subversion/include/svn_client.h,


(svn_client__shelf_*): Move into svn_client_shelf.h.

* subversion/libsvn_client/diff.c,



Include the new header.

Initialize the 'svn x-shelf-*' commands programmatically at run time,

instead of hard-coding them in svn's main command table.

A step towards decoupling the experimental shelving CLI from the main CLI.

* subversion/svn/cl.h


SVN_CL__LOG_MSG_OPTIONS): Move to here from svn.c.


svn_cl__wc_copy_mods): Remove these declarations.

(svn_cl__cmd_table): Change to a pointer.

* subversion/svn/shelf-cmd.c


svn_cl__wc_copy_mods): New 'static', no longer external.

(svn_cl__cmd_table_shelf3): New command table, with contents moved to here

from svn_cl__cmd_table.

* subversion/svn/shelf-cmd.h


* subversion/svn/svn.c

(svn_cl__cmd_table_main): Renamed from 'svn_cl__cmd_table'. Move

shelf-related entries to svn_cl__cmd_table_shelf3 in shelf-cmd.c.

(svn_cl__cmd_table): Change to a pointer.

(add_commands): New.

(sub_main): Call add_commands(). Rewrite a check because the shelving

command functions are no longer externally visible.

Make the 'decouple-shelving-cli' branch.
Announce Subversion's 20th Anniversary

* index.html

(news-20200227): New section. Announce anniversary with link to

press release and call to action.

* news.html

(news-20200227): New section. Copied verbatim from above.

1.14 release notes: Fix wrong heading for new feature

* docs/release-notes/1.14.html

(svnadmin-rev-size): Change heading type from h4 to h3 for consistency with

other release notes.

1.14 release notes: Relative to 1.10, describe experimental changes

* docs/release-notes/1.14.html

(new-feature-compatibility-table): Add rows the experimental shelving,

commit checkpointing, and viewspec output features.




viewspec-output): New subsections. Text is (mostly) copied from the 1.11

through 1.13 release notes, with some edits. Notably, document that while

the shelving feature can handle more types of changes than in 1.10, it is

reportedly slower than in 1.10.

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

1.14 release notes: Document support for building with SWIG 4, Python 3.x.

* docs/release-notes/1.14.html

(swig4-on-py3): New subsection.

1.14 release notes: Document 'svn info --show-item=changelist'

* docs/release-notes/1.14.html

(info-show-item-changelist): New subsection.

1.14 release notes: Make revisions numbers link to viewvc.

* docs/release-notes/1.14.html



mod-dav-svn-twice-hint): Make revision numbers into links to viewvc.

(log-quiet-diff): Document the revision number as a link.

1.14 release notes: 1.10.x is old stable; 1.9.x is EOL

* docs/release-notes/1.14.html

(svn-1.10-old-stable): New subsection. Document that 1.10.x is now

the old stable version.

(svn-1.9-deprecation): New subsection. Document that 1.9.x is now

end of life (EOL).

1.14 release notes: Relative to 1.10, describe nonexperimental changes in 1.13

* docs/release-notes/1.14.html

(new-feature-compatibility-table): Add row for 'svnadmin rev-size'.




mod-dav-svn-twice-hint): New subsections, with text copied from 1.13

release notes and/or log entries from the relevant revisions, and edited

for proper flow.

1.14 release notes: Relative to 1.10, describe nonexperimental changes in 1.12

* docs/release-notes/1.14.html

(conflict-resolver): Add text from 1.12 release notes to text previously

copied from 1.11 release notes, with minor editing for proper flow.






svn-cleanup): New subsections, copied from 1.12 release notes.

* docs/release-notes/1.12.html: fix missing </ul> and </li> end tags

1.14 release notes: Relative to 1.10, describe nonexperimental changes in 1.11

* docs/release-notes/1.14.html

(news): Explain that these 1.14-LTS release notes are written relative to

the preceding LTS release, 1.10.






ruby-swig-issue-602): New subsections, copied from 1.11 release notes.

Complete the upgrade of array insert/delete functions.

For issue #4840 "Merge assertion failure in svn_sort__array_insert".

This changes all remaining callers, in other areas of Subversion, to use the

new array insert/delete functions that return standard Subversion errors if

inputs are out of bounds, and removes the old versions of those functions.

These are private functions so the public API is not affected.

* subversion/include/private/svn_sorts_private.h

* subversion/libsvn_subr/sorts.c


svn_sort__array_delete): Remove.


svn_sort__array_delete2): Rewrite as the only version, instead of calling

the old version. No functional change.

Elsewhere: update all callers.

  1. … 4 more files in changeset.
release-notes (1.11 - 1.14): fix missing note in compatibility table

* docs/release-notes/1.11.html

* docs/release-notes/1.12.html

* docs/release-notes/1.13.html

* docs/release-notes/1.14.html

(new-feature-compatibility-table) Fix missing note that when using

file:// RA method, the svn program is both client and server.

Require at least version 1.5 of APR

Since r1874057, the apr_pescape_shell() API is being used to escape filenames

when invoking $SVN_EDITOR. This was added to APR in 1.5.0, released on



(): Document new minimum APR version

* build/generator/

(_find_apr): Bump minimal_apr_version to 1.5.0


(APR_VER_REGEXES): Bump minor version in 1.x regex to 1.5


(APR_VERSION): Specify 1.5.0 as default version

* subversion/include/private/svn_dep_compat.h

(apr_time_from_msec): Removed, since it's provided by APR 1.4.0 or later

* subversion/include/svn_types.h

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

prototypes, since they're provide by APR 1.5.0 or later

* subversion/libsvn_subr/iter.c

(hash_do_baton): Remove condition requiring APR 1.4.0 to define this type

(svn_iter_apr_hash): Remove pre-APR 1.4.0 code

(apr_hash_this_key, apr_hash_this_key_len, apr_hash_this_val): Remove

definitions, since they're provided by APR 1.5.0 or later

* subversion/libsvn_subr/pool.c

(apr_pool_create_unmanaged_ex): Remove conditional alias to

apr_pool_create_core_ex, for APR versions < 1.3.3

Followup to r1874057, escape whitespace instead of quoting filename

As danielsh pointed out, only specific characters can be escaped by a backslash

in quoted shell strings. Rather than surrounding the escaped path with double

quotes, post-process the quoted path and manually escape any whitespace that is


* subversion/libsvn_subr/cmdline.c

(escape_path): New function, wrapper around apr_pescape_shell(), which

handles escaping of whitespace.

(svn_cmdline__edit_file_externally, svn_cmdline__edit_string_externally):

Call the new function instead of apr_pescape_shell()

* subversion/tests/cmdline/

(update_accept_conflicts): Include ';' in renamed path ("p; i"), to ensure

non-whitespace escaping is handled correctly.

Escape filenames when invoking $SVN_EDITOR

Per, $SVN_EDITOR is invoked

through the shell instead of directly executed. The user is expected to

properly escape/quote $SVN_EDITOR, but svn was putting the filename directly

into the command without any escaping. This therefore breaks attempts to,

e.g., run the editor from the merge conflict dialog when a path has special


Update locations where we invoke the editor to quote the filename as well as

escape shell special characters using apr_pescape_shell(). The quotes are

needed in addition to the escaping, since apr_pescape_shell() does not escape


* subversion/libsvn_subr/cmdline.c

(svn_cmdline__edit_file_externally, svn_cmdline__edit_string_externally):

Quote and escape, via apr_pescape_shell(), the filename in the command line.

* subversion/tests/cmdline/

(update_accept_conflicts): Rename "A/D/G/pi" to "A/D/G/p i" before performing

the merge, so the test exercises the changes above.

Fix test failures seen on 32-bit architectures (Fedora Raw Hide, both

i686 and armv7hl) when building with GCC 10 snapshots.

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

(get_rev_contents): Avoid signed integer overflow on platforms with

32-bit long.

Nominate r1872030 group (issue #4840, merge assertion failure).
Nominate r1872030 group (issue #4840, merge assertion failure).
1.14 release notes: svn log --quiet and --diff not mutually exclusive

* docs/release-notes/1.14.html

(log-quiet-diff): New subsection. Documents the change introduced in


* publish/docs/release-notes/1.10.html: Fix end tag: </tt> to </p>.

Follow-up to r1872925:

* subversion/tests/README: Add missing case 'SKIP' to the synopsis.