Skip to content

Commit 27f1964

Browse files
committed
On the 'utf8-cmdline' branch: Sync with trunk, resolving minor conflicts in
svn_opt.h (left unchanged). git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/utf8-cmdline@1932345 13f79535-47bb-0310-9956-ffa450edef68
2 parents b889b26 + 1272a1c commit 27f1964

109 files changed

Lines changed: 22976 additions & 16220 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/cmake.yml

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ jobs:
9393
name: ${{ matrix.name }}
9494

9595
env:
96-
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
9796
CMAKE_GENERATOR: ${{ matrix.cmake_generator }}
9897

9998
steps:
@@ -106,22 +105,42 @@ jobs:
106105
107106
ls env: | foreach { "$($_.Name)=$($_.Value)" >> $env:GITHUB_ENV }
108107
109-
- name: Export GitHub Actions cache environment variables
108+
- name: Get vcpkg sha (Windows, vcpkg)
110109
if: runner.os == 'Windows'
111-
uses: actions/github-script@v7
110+
id: vcpkg-sha
111+
run: |
112+
cd C:\vcpkg
113+
$sha = git rev-parse HEAD
114+
echo "sha=$sha" >> $env:GITHUB_OUTPUT
115+
116+
- name: Restore vcpkg archives (Windows, vcpkg)
117+
if: runner.os == 'Windows'
118+
uses: actions/cache/restore@v4
112119
with:
113-
script: |
114-
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
115-
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
120+
path: vcpkg-archives
121+
key: vcpkg/${{ runner.os }}/${{ matrix.vcpkg_triplet }}/${{ steps.vcpkg-sha.outputs.sha }}
122+
restore-keys: vcpkg/${{ runner.os }}/${{ matrix.vcpkg_triplet }}/
116123

117124
- name: Install dependencies (Windows, vcpkg)
118125
if: runner.os == 'Windows'
126+
env:
127+
VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}\vcpkg-archives
119128
run: |
129+
if (-not (Test-Path $env:VCPKG_DEFAULT_BINARY_CACHE)) {
130+
New-Item $env:VCPKG_DEFAULT_BINARY_CACHE -ItemType Directory | Out-Null
131+
}
120132
C:\vcpkg\vcpkg.exe install --triplet ${{ matrix.vcpkg_triplet }} `
121133
apr apr-util serf expat zlib sqlite3
122134
123135
"CMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake" >> $env:GITHUB_ENV
124136
137+
- name: Save vcpkg archives (Windows, vcpkg)
138+
if: runner.os == 'Windows'
139+
uses: actions/cache/save@v4
140+
with:
141+
path: vcpkg-archives
142+
key: vcpkg/${{ runner.os }}/${{ matrix.vcpkg_triplet }}/${{ steps.vcpkg-sha.outputs.sha }}
143+
125144
- name: Install dependencies (Linux, apt-get)
126145
if: runner.os == 'Linux'
127146
run: >

CHANGES

Lines changed: 105 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,118 @@
44
# To view an issue listed as (issue #XXXX), visit:
55
# https://subversion.apache.org/issue-XXXX
66

7+
Version 1.16.0
8+
(?? ??? 20XX, from /branches/1.16.x)
9+
https://svn.apache.org/repos/asf/subversion/tags/1.16.0
10+
711
Version 1.15.0
812
(?? ??? 20XX, from /branches/1.15.x)
913
https://svn.apache.org/repos/asf/subversion/tags/1.15.0
14+
15+
See the 1.15 release notes for a more verbose overview of the changes since
16+
the 1.14 release: https://subversion.apache.org/docs/release-notes/1.15.html
17+
1018
User-visible changes:
19+
- Major new features:
20+
* New 'pristineless' mode for working copies that eliminates overhead
21+
from storing cached pristine content (r1905955, issue #525)
22+
* Support for multiple working copy formats (r1898187, issue #4883)
23+
24+
- Minor new features and improvements:
25+
* Re-enable plaintext credential store by default on Unix (r1909351)
26+
* Optimize checkout, update and export by simultaneously streaming
27+
data to both pristine and working files (r1886490 et al)
28+
1129
- Client-side improvements and bugfixes:
12-
* Support multiple working copy formats (1.8-onward, 1.15) (issue #????)
30+
* Disable best-fit Unicode mapping for Windows command-line arguments
31+
(r1927953)
32+
* Optimize checkout, update and export on Windows by reducing the
33+
number of file reopens (r1886490 et al)
34+
* Use a cryptographic checksum comparison to determine if a file
35+
has been modified in a working copy (r1892645)
36+
* Warn on merges from foreign repositories if UUIDs match but URLs
37+
differ (r1888474 et al, issue #4874)
38+
* Fix assertion on 'svn move [URL] [URL]/subdir' (r1909127, issue #4913)
39+
* ra_serf: Fix segfault on unexpected server responses (r1929793)
40+
* ra_serf: Optimize array filling for inherited properties (r1878084)
41+
* svn: Print character encoding in 'svn --version --verbose' (r1926252)
42+
* svn: Show new macOS versions in 'svn --version --verbose' (r1882127 et al)
43+
* svn: Document trailing-@ trick to avoid peg-revision parsing (r1910826)
44+
* svnlook: Fix handling of negative --limit arguments (r1919535)
45+
* svnmucc: Fix handling of revision arguments like 'Head' (r1925905)
46+
* svnmucc: Fix handling of revision arguments like 'r123' (r1925907)
47+
* svnmucc: Ensure that log messages are using UTF-8 (r1925913)
48+
* svnmucc: Ensure that property values are using UTF-8 (r1926023)
49+
* svnmucc: Show usage instead of help for empty actions (r1926034)
50+
* Use distinct temporary file names for regular and revision property
51+
edits (r1885997)
52+
* Expand ~username directories in tab completion (r1896619, issue #3714)
53+
* Reimplement macOS Keychain auth provider with SecItem* API (r1926564)
54+
55+
- Server-side improvements and bugfixes:
56+
* fsfs: Fix uninitialized read in the logical addressing code (r1880374)
57+
* fsfs: Reduce spurious conflicts when file content and directory
58+
properties are changed in parallel (r1908595)
59+
* fsx: Fix uninitialized read in the logical addressing code (r1880374)
60+
* fsx: Reduce spurious conflicts when file content and directory
61+
properties are changed in parallel (r1908595)
62+
* mod_dav_svn: Use mod_dav's DAVBasePath setting to determine the
63+
repository root path (r1926683)
64+
* svnadmin: Minor optimization in 'svnadmin load' (r1908751)
65+
* svnserve: Add SIGTERM/SIGINT handling (r1908547)
1366

1467
- Other tool improvements and bugfixes:
15-
* When building on Unix, change default configure option to enable support
16-
for the simple (plaintext) credential store unless disabled at configure
17-
time with --disable-plaintext-password-storage. This reverts r1845377
18-
(r1909351).
68+
* case-insensitive.py: Update for Python 3 compatibility (r1881774)
69+
* check-mime-type.pl: Support property-modified files (r1911931)
70+
* fsfsfixer: Update to work with svnadmin verify versions 1.9+ (r1886928)
71+
* fsfsfixer: Update to work with packed repositories (r1887170)
72+
* fsfsverify.py: Support FSFS format >= 4 property lists (r1909337)
73+
* mailer.py: Support message buffering (r1914915)
74+
* mailer.py: Support maximum message length (r1917168)
75+
* mailer.py: Omit diff content when messages are too long (r1917169)
76+
* svn_apply_autoprops.py: Fix Windows compatibility (r1917382)
77+
* svn_apply_autoprops.py: Support @-containing filenames (r1917397)
78+
* svn_apply_autoprops.py: Update for Python 3 compatibility (r1917446)
79+
* svn_load_dirs.pl: Update to handle 'svn propget' errors for non-existent
80+
properties (r1912002, issue #4621)
81+
* wc-format.py: Minor update for Python 3 compatibility (r1880178)
82+
83+
Developer-visible changes:
84+
- General:
85+
* Support building using CMake (r1920717 et al)
86+
* Drop support for Python 2.x in test scripts (r1899944, r1925713)
87+
* Support building for Windows on ARM64 (r1890668, r1890673)
88+
* Support Visual Studio 2022 project generation (r1899028)
89+
* Enable multi-processor compilation (/MP) on Windows (r1906011)
90+
* Support shared RA modules on Windows with CMake (r1921006 et al)
91+
* Support running Valgrind during 'make check' (r1908546)
92+
* Fix building against static Serf on Windows (r1888560)
93+
* Fix finding libexpat on static library builds on Windows (r1888565)
94+
* Fix 'make clean' in out-of-tree builds (r1883939)
95+
* Default AR_FLAGS to 'cr' to fix GNU archiver warnings (r1884094)
96+
* Support generation of .clangd file with '--enable-dot-clangd' (r1925652)
97+
* Fix propagation of libsvn_fs_x_LDFLAGS to the Makefile (r1908721)
98+
* Support C++11 and later (r1883715)
99+
* Allow selecting the C++ language standard with '--enable-c++' (r1883715)
100+
* Remove use of some deprecated autoconf macros (r1908543)
101+
* Guard experimental Serf logic with SVN__SERF_EXPERIMENTAL (r1930808)
102+
* Add 'reverse-merge' attribute to the log schema (r1892455)
103+
* tests: Allow testing ra_serf using Digest authentication (r1926790)
104+
* tests: Close file descriptor using the context manager (r1884279)
105+
* tests: Fix TypeError in some test cases (r1897708)
106+
* tests: Stop encoding a test's number in the svntest library (r1897443)
107+
* tests: Verify command output against Relax NG XML schemas (r1925717)
108+
109+
- Bindings:
110+
* JavaHL: Fix JNI setup for translateOutputStream (r1886280)
111+
* swig: Allow NULL wri_abspath in svn_client_ra_session2() (r1917448)
112+
* swig-py: Allow str(unicode) input for string types (r1885370)
113+
* swig-py: Allow SubversionException to carry attributes (r1880967)
114+
* swig-rb: Block SWIG 4.2.0 because it produces broken external
115+
runtime code (r1915235)
116+
* swig-pl: Fix 'unable to close filehandle' warnings in tests (r1915576)
117+
* swig-py: Fix test cleanup failing with Python 3 on Windows due
118+
to a circular reference of the raised exception (r1897441)
19119

20120
Version 1.14.5
21121
(7 Dec 2024, from /branches/1.14.x)

CMakeLists.txt

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ function(read_version path var major minor patch)
3232
string(REGEX REPLACE ".*${minor} +([0-9]+).*" "\\1" VER_MINOR ${VERSION_STRINGS})
3333
string(REGEX REPLACE ".*${patch} +([0-9]+).*" "\\1" VER_PATCH ${VERSION_STRINGS})
3434

35+
set(${major} "${VER_MAJOR}" PARENT_SCOPE)
36+
set(${minor} "${VER_MINOR}" PARENT_SCOPE)
37+
set(${patch} "${VER_PATCH}" PARENT_SCOPE)
3538
set(${var} "${VER_MAJOR}.${VER_MINOR}.${VER_PATCH}" PARENT_SCOPE)
3639
endif()
3740
endfunction()
@@ -92,7 +95,7 @@ option(SVN_ENABLE_SWIG_RUBY "Enable Subversion SWIG bindings into Ruby" OFF)
9295

9396
# Enable modules and features
9497
option(SVN_ENABLE_RA_LOCAL "Enable Subversion Local Repository Access Library" ON)
95-
option(SVN_ENABLE_RA_SERF "Enable Subversion HTTP/WebDAV Protocol Repository Access Library" OFF)
98+
option(SVN_ENABLE_RA_SERF "Enable Subversion HTTP/WebDAV Protocol Repository Access Library" ON)
9699
option(SVN_ENABLE_RA_SVN "Enable Subversion SVN Protocol Repository Access Library" ON)
97100
option(SVN_ENABLE_FS_FS "Enable Subversion FSFS Repository Filesystem Library" ON)
98101
option(SVN_ENABLE_FS_X "Enable Subversion FSX Repository Filesystem Library" ON)
@@ -111,6 +114,8 @@ cmake_dependent_option(SVN_BUILD_SHARED_RA "Build shared RA modules" ON "BUILD_S
111114
option(SVN_DEBUG "Enables specific features for developer builds" OFF)
112115
cmake_dependent_option(SVN_USE_WIN32_CRASHHANDLER "Enables WIN32 crash handler." ON "WIN32" OFF)
113116
option(SVN_USE_DSO "Defined if svn should try to load DSOs" OFF)
117+
set(SVN_CHECKSUM_BACKEND "apr" CACHE STRING "Checksum backend to use (possible values are 'apr', 'openssl', 'bcrypt', 'xdigest')" )
118+
set_property(CACHE SVN_CHECKSUM_BACKEND PROPERTY STRINGS "apr" "openssl" "bcrypt" "xdigest")
114119
set(SVN_SOVERSION "0" CACHE STRING "Subversion library ABI version")
115120
mark_as_advanced(SVN_SOVERSION)
116121

@@ -372,17 +377,59 @@ endif()
372377
### Serf
373378
if (SVN_ENABLE_RA_SERF)
374379
if(SVN_USE_PKG_CONFIG)
375-
pkg_search_module(serf IMPORTED_TARGET serf-2 serf-1)
376-
377-
if(serf_FOUND)
378-
add_library(external-serf ALIAS PkgConfig::serf)
379-
endif()
380+
pkg_search_module(serf IMPORTED_TARGET REQUIRED serf-2 serf-1>=1.3.4)
381+
add_library(external-serf ALIAS PkgConfig::serf)
380382
else()
381-
find_package(Serf REQUIRED)
383+
find_package(Serf 1.3.4 REQUIRED)
382384
add_library(external-serf ALIAS Serf::Serf)
383385
endif()
384386
endif()
385387

388+
if (SVN_CHECKSUM_BACKEND STREQUAL "apr")
389+
add_library(external-checksum-libs INTERFACE)
390+
add_private_config_definition(
391+
"Defined if svn should use APR to compute checksums."
392+
"SVN_CHECKSUM_BACKEND_APR" "1"
393+
)
394+
elseif (SVN_CHECKSUM_BACKEND STREQUAL "openssl")
395+
find_package(OpenSSL REQUIRED)
396+
add_library(external-checksum-libs ALIAS OpenSSL::Crypto)
397+
add_private_config_definition(
398+
"Defined if svn should use OpenSSL to compute checksums."
399+
"SVN_CHECKSUM_BACKEND_OPENSSL" "1"
400+
)
401+
elseif (SVN_CHECKSUM_BACKEND STREQUAL "bcrypt")
402+
if (NOT WIN32)
403+
message(SEND_ERROR "BCrypt checksum backend is only available on Win32 platform.")
404+
endif()
405+
406+
add_library(external-checksum-libs INTERFACE)
407+
target_link_libraries(external-checksum-libs INTERFACE Bcrypt.lib)
408+
409+
add_private_config_definition(
410+
"Defined if svn should use BCrypt to compute checksums."
411+
"SVN_CHECKSUM_BACKEND_BCRYPT" "1"
412+
)
413+
elseif (SVN_CHECKSUM_BACKEND STREQUAL "xdigest")
414+
if (SVN_USE_PKG_CONFIG)
415+
pkg_check_modules(xdigest REQUIRED IMPORTED_TARGET xdigest)
416+
add_library(external-checksum-libs ALIAS PkgConfig::xdigest)
417+
else()
418+
find_package(XDIGEST REQUIRED)
419+
add_library(external-checksum-libs ALIAS XDIGEST::XDIGEST)
420+
endif()
421+
422+
add_private_config_definition(
423+
"Defined if svn should use xdigest to compute checksums."
424+
"SVN_CHECKSUM_BACKEND_XDIGEST" "1"
425+
)
426+
else()
427+
message(SEND_ERROR
428+
"Invalid value of SVN_CHECKSUM_BACKEND: '${SVN_CHECKSUM_BACKEND}'. "
429+
"Possible options are 'apr' or 'openssl'."
430+
)
431+
endif()
432+
386433
### Python
387434

388435
if(SVN_ENABLE_SWIG_PYTHON)
@@ -648,6 +695,10 @@ if (HAVE_UNISTD_H)
648695
autocheck_symbol_exists("getpid" "unistd.h" HAVE_GETPID)
649696
endif()
650697

698+
set(CMAKE_REQUIRED_LIBRARIES external-zlib)
699+
autocheck_symbol_exists("adler32_z" "zlib.h" SVN_ZLIB_HAS_ADLER32_Z)
700+
unset(CMAKE_REQUIRED_LIBRARIES)
701+
651702
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
652703

653704
file(GLOB public_headers "subversion/include/*.h")
@@ -952,6 +1003,7 @@ message(STATUS " Build shared libraries ........ : ${BUILD_SHARED_LIBS}")
9521003
message(STATUS " Build shared FS Modues ........ : ${SVN_BUILD_SHARED_FS}")
9531004
message(STATUS " Build shared RA Modues ........ : ${SVN_BUILD_SHARED_RA}")
9541005
message(STATUS " Use pkg-config dependencies ... : ${SVN_USE_PKG_CONFIG}")
1006+
message(STATUS " Checksum Backend .............. : ${SVN_CHECKSUM_BACKEND}")
9551007
message(STATUS " FS modules:")
9561008
message(STATUS " Enable FSFS ................... : ${SVN_ENABLE_FS_FS}")
9571009
message(STATUS " Enable FSX .................... : ${SVN_ENABLE_FS_X}")

COMMITTERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Blanket commit access:
5757
stefan2 Stefan Fuhrmann <stefan2@apache.org>
5858
jcorvel Johan Corveleyn <jcorvel@gmail.com>
5959
trent Trent Nelson <trent@snakebite.org>
60-
kotkov Evgeny Kotkov <evgeny.kotkov@visualsvn.com>
60+
kotkov Evgeny Kotkov <evgeny.kotkov@axiorema.com>
6161
astieger Andreas Stieger <andreas.stieger@gmx.de>
6262
jamessan James McCoy <jamessan@jamessan.com>
6363
troycurtisjr Troy Curtis, Jr <troycurtisjr@gmail.com>
@@ -67,6 +67,7 @@ Blanket commit access:
6767
dsahlberg Daniel Sahlberg <daniel.l.sahlberg@gmail.com>
6868
vinc17 Vincent Lefevre <vincent@vinc17.net>
6969
rinrab Timofei Zhakov <tima@chemodax.net>
70+
minfrin Graham Leggett <minfrin@sharp.fm>
7071

7172
[[END ACTIVE FULL COMMITTERS. LEAVE THIS LINE HERE; SCRIPTS LOOK FOR IT.]]
7273

NOTICE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Apache Subversion
2-
Copyright 2025 The Apache Software Foundation
2+
Copyright 2026 The Apache Software Foundation
33

44
This product includes software developed by many people, and distributed
55
under Contributor License Agreements to The Apache Software Foundation

build.conf

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ install = fsmod-lib
394394
path = subversion/libsvn_subr
395395
sources = *.c lz4/*.c
396396
libs = aprutil apriconv apr xml zlib apr_memcache
397-
sqlite magic intl lz4 utf8proc macos-plist macos-keychain
397+
sqlite magic intl lz4 utf8proc macos-plist macos-keychain checksum-libs
398398
msvc-libs = kernel32.lib advapi32.lib shfolder.lib ole32.lib
399399
crypt32.lib version.lib ws2_32.lib
400400
msvc-export =
@@ -417,7 +417,7 @@ msvc-export =
417417
private/svn_thread_cond.h private/svn_waitable_counter.h
418418
private/svn_packed_data.h private/svn_object_pool.h private/svn_cert.h
419419
private/svn_config_private.h private/svn_dirent_uri_private.h
420-
../libsvn_subr/crypto.h
420+
private/svn_xml_private.h ../libsvn_subr/crypto.h
421421

422422
# Working copy management lib
423423
[libsvn_wc]
@@ -932,6 +932,14 @@ libs = libsvn_test libsvn_wc libsvn_repos libsvn_fs libsvn_delta libsvn_subr apr
932932
# ----------------------------------------------------------------------------
933933
# Tests for libsvn_subr
934934

935+
[adler32-test]
936+
description = Test our implementation of the adler32 checksum.
937+
type = exe
938+
path = subversion/tests/libsvn_subr
939+
sources = adler32-test.c
940+
install = test
941+
libs = libsvn_test libsvn_subr apr zlib
942+
935943
[auth-test]
936944
description = Test platform-specific auth provider access
937945
type = exe
@@ -1497,6 +1505,10 @@ external-lib = $(SVN_SASL_LIBS)
14971505
type = lib
14981506
external-lib = $(SVN_OPENSSL_LIBS) $(SVN_LIBCRYPTO_LIBS)
14991507

1508+
[checksum-libs]
1509+
type = lib
1510+
external-lib = $(SVN_CHECKSUM_LIBS)
1511+
15001512
[intl]
15011513
type = lib
15021514
external-lib = $(SVN_INTL_LIBS)

build/ac-macros/zlib.m4

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,20 @@ AC_DEFUN(SVN_LIB_Z,
7373
])
7474
fi
7575
fi
76-
76+
7777
if test "$zlib_found" = "no"; then
7878
AC_MSG_ERROR([subversion requires zlib])
7979
fi
8080
81+
dnl Check if this zlib provides adler32_z().
82+
save_ldflags="$LDFLAGS"
83+
LDFLAGS="$SVN_ZLIB_LIBS"
84+
AC_CHECK_FUNC([adler32_z],[
85+
AC_DEFINE([SVN_ZLIB_HAS_ADLER32_Z],[1],
86+
[Define if the function adler32_z() is available])
87+
],[])
88+
LDFLAGS="$save_ldflags"
89+
8190
SVN_DOT_CLANGD([$SVN_ZLIB_INCLUDES])
8291
AC_SUBST(SVN_ZLIB_INCLUDES)
8392
AC_SUBST(SVN_ZLIB_LIBS)

0 commit comments

Comments
 (0)