subversion

Checkout Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset {id} does not exist or has not been indexed.

* upcoming.part.html: Automatically regenerated
Merge r1866425 from trunk:

* r1866425

mod_dav_svn: Set Last-Modified response header for 'external' GET requests.

Justification:

The Last-Modified header was removed in r1724790 for performance reasons.

However, for external requests the Last-Modified header is needed for

certain use cases. Bringing it back only for external requests fixes

these, while keeping the performance gain for checkout / update.

Votes:

+1: jcorvel, brane

Merge r1864440 from trunk:

* r1864440

Fix 'svn patch' setting UNIX permissions to 0600 on files with props.

Justification:

'svn patch' should honour the user's umask.

User complained: https://svn.haxx.se/dev/archive-2019-07/0072.shtml

Votes:

+1: stsp, brane

* STATUS:

Approve r1864440.

Approve r1866425.

* STATUS:

Approve r1845212.

Approve r1850651.

Approve r1852013.

Approve r1853483.

Approve the r1854072 group.

Approve r1857367.

Approve r1857391.

Merge from staging: new consensus that non-LTS backports need only two +1 votes.
* staging/docs/community-guide/releasing.part.html

(release-stabilization-how-many-votes): Update to reflect mailing-list

consensus that we need two +1s, not just one, for non-LTS backports.

In 'staging': Catch up merge from 'publish'.
Tagging release 1.13.0-rc1
* branches/1.13.x/STATUS: New file.
Increment the trunk version number to 1.14, and introduce a new CHANGES

section, following the creation of the 1.13.x release branch.

* subversion/include/svn_version.h,

subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java,

subversion/tests/cmdline/svntest/main.py

(SVN_VER_MINOR): Increment to 14.

* CHANGES: New section for 1.14.0.

Create the 1.13.x release branch.
* publish/docs/community-guide/releasing.toc.html: Fix TOC, following r1840822.
* publish/docs/community-guide/releasing.part.html

(rolling-release): Update 'release.py' command-lines, removing unnecessary

'base-dir' and 'branch' options, the latter for compatibility with r1866944.

* CHANGES: pick a release date for 1.13.0.
* CHANGES: update with changes since 1.12.x.
Make the dump stream parser more resilient to malformed dump streams that

do not contain \n characters at all.

Previously, we'd attempt to load the whole input into memory due to how

svn_stream_readline() is currently implemented. Doing so could potentially

choke for large files. The corresponding real-world case is where a user

(accidentally) attempts to load a huge binary file that does not contain \n

characters as the repository dump.

This is the potential cause of the OOM reported in

https://lists.apache.org/thread.html/c96eb5618ac0bf6e083345e0fdcdcf834e30913f26eabe6ada7bab62@%3Cusers.subversion.apache.org%3E

* subversion/libsvn_repos/load.c

(parse_format_version): Read the dump version string directly from

stream, with an upper limit of 80 bytes. Comment on why we don't use

svn_stream_readline() for this particular case.

(svn_repos_parse_dumpstream3): Update the call to parse_format_version().

Fix an issue with the readline implementation for file streams that could

cause excessive memory usage for inputs containing one or multiple \0 bytes.

This is the likely cause of the OOM reported in

https://lists.apache.org/thread.html/c96eb5618ac0bf6e083345e0fdcdcf834e30913f26eabe6ada7bab62@%3Cusers.subversion.apache.org%3E

(I think that the problem itself is a regression introduced by me in 1.10.)

Note: one thing I noticed while preparing the fix is that our `readline_fn`

functions for different streams have inconsistent behavior if the input data

contains \0 bytes. More specifically, they may return different `line` values,

that may either be truncated at \0 or actually contain the whole data between

EOLs, including \0 bytes. For now, this patch only fixes the excessive memory

usage problem, and I noted this related problem in the test and left it for

future work.

* subversion/libsvn_subr/stream.c

(readline_apr_lf, readline_apr_generic): Reallocate the buffer based on its

current size, instead of calculating the new size based on the already

prealloc'd size. There are no actual benefits in reallocating based on

`blocksize`, and in the described case with \0 bytes doing so also backfires

and may cause excessive allocations due to the actual size of the string

being less than we expect it to. A degenerate case of the erroneous

behavior is ...

* subversion/tests/libsvn_subr/stream-test.c

(test_stream_readline_file_nul): ...exploited in this new test.

(test_funcs): Run new test.

* subversion/tests/libsvn_subr

(): Adjust svn:ignore.

* tools/dist/release.py (main): Move '--branch' to be a global option.
[On the staging-ng branch]

* BRANCH-README: New file.

Create branch of Subversion site for modernization project.

Remove unused old branch: site-ng.

This branch was created in 2015 and never used. Also it was branched

from the wrong level so it contained other branches. To be replaced by

a new "staging-ng" branch under subversion/site/.

* tools/dist/release.py: Remove obsolete distinction between http and https access.
When following an HTTP redirect, use the Location header URL exactly.

Previously we canonicalized the redirect URL, which could lead to a redirect

loop. Then Subversion would report a redirect loop as the error, potentially

hiding a more interesting error such as when the target is not in fact a

Subversion repository.

A manual test case (on a non-repository):

before:

$ svn ls https://archive.apache.org/dist

Redirecting to URL 'https://archive.apache.org/dist':

Redirecting to URL 'https://archive.apache.org/dist':

svn: E195019: Redirect cycle detected for URL 'https://archive.apache.org/dist'

after:

$ svn ls https://archive.apache.org/dist

Redirecting to URL 'https://archive.apache.org/dist/':

svn: E170013: Unable to connect to a repository at URL 'https://archive.apache.org/dist/'

svn: E175003: The server at 'https://archive.apache.org/dist/' does not support the HTTP/DAV protocol

* subversion/libsvn_ra_serf/options.c

(svn_ra_serf__exchange_capabilities): Don't canonicalize the redirect URL.

* subversion/libsvn_ra_serf/util.c

(response_get_location): Don't canonicalize the redirect URL.

* tools/dist/release.py

(get_branch_path): New, factored out from several callers.

* tools/dist/release.py

Use a global constant for archive URL so all ASF URLs are thus defined near the top of file.

* index.html

(#site-content): Use the correct trademark symbol.

* publish/index.html: Fix TM/(R) attributions on 'Apache Subversion'.
* publish/site-nav.html

Move 'binary packages' above 'source download' as a tiny recognition of

what I suppose are the most common needs.

* publish/site-nav.html: Add a link to 'Source Code' page in nav menu.