Author: rinrab
Date: Fri Sep  4 16:35:39 2026
New Revision: 1937876

Log:
On the 'reparentless' branch: Catchup from trunk.

Modified:
   subversion/branches/reparentless/   (props changed)
   subversion/branches/reparentless/INSTALL
   subversion/branches/reparentless/subversion/libsvn_ra/wrapper_template.h
   subversion/branches/reparentless/subversion/tests/libsvn_ra/ra-test.c

Modified: subversion/branches/reparentless/INSTALL
==============================================================================
--- subversion/branches/reparentless/INSTALL    Fri Sep  4 16:08:28 2026        
(r1937875)
+++ subversion/branches/reparentless/INSTALL    Fri Sep  4 16:35:39 2026        
(r1937876)
@@ -299,7 +299,7 @@ II.   INSTALLATION
         For editing the cache (options), do right-click to the CMakeLists.txt
         file and clicking `CMake Settings for Subversion` will open the
         editor. After the required settings are configured, hit `F7` in
-        order to build. For more info, check the article bellow:
+        order to build. For more info, check the article below:
 
             
https://learn.microsoft.com/en-us/cpp/build/cmake-projects-in-visual-studio
 
@@ -327,351 +327,36 @@ II.   INSTALLATION
   C.  Building with vcproj/vcxproj (Windows only, deprecated)
       -------------------------------------------------------
 
-      Windows users may find it easier to build Subversion using CMake and
-      vcpkg (see section B above).
+      The vcproj/vcxproj-based build system is deprecated since Subversion 1.15
+      and will be removed in a future release.  See
 
-      The following procedure does not use CMake or vcpkg.
+          https://subversion.apache.org/docs/release-notes/1.15.html#vcproj
 
-  C.1 Prerequisites
+      Windows users should build Subversion using CMake (see section B above).
 
-      * Microsoft Visual Studio. Any recent (2005+) version containing the
-        Visual C++ component will work (E.g. Professional, Express, Community
-        Edition). Make sure you enable C++ support during setup.
-      * Python 2.7 or higher, downloaded from https://www.python.org/ which is
-        used to generate the project files.
-      * Perl 5.8 or higher from https://www.perl.org/get.html
-      * Awk is needed to compile Apache. Source code is available in 
-        tools\dev\awk, run the buildwin.bat program to compile.
-      * Apache apr, apr-util, and optionally apr-iconv libraries, version
-        1.4 or later (1.2 for apr-iconv). If you are building from a Subversion
-        checkout and have not downloaded Apache 2, then get these 3 libraries
-        from https://www.apache.org/dist/apr/.
-      * SQLite 3.24.0 or higher from https://www.sqlite.org/download.html
-        (3.39.4 or higher recommended)
-      * ZLib 1.2 or higher is required and can be obtained from
-        http://www.zlib.net/
-      * Either a Subversion client binary from
-        https://subversion.apache.org/packages.html to do the initial checkout
-        of the Subversion source or the zip file source distribution.
-
-      Additional Options
-
-      * [Optional] Apache Httpd 2 source, downloaded from
-        https://httpd.apache.org/download.cgi, these instructions assume
-        version 2.0.58.  This is only needed for building the Subversion
-        server Apache modules.  ### FIXME Apache 2.2 or greater required.
-      * [Optional] Berkeley DB for backend support of the server components
-        are available from
-        
http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index-082944.html
-        (Version 4.4.20 or in specific cases some higher version recommended)
-      * [Optional] Openssl can be obtained from https://www.openssl.org/source/
-      * [Optional] NASM can be obtained from http://www.nasm.us/
-      * [Optional] A modified version of GNU libintl, called
-        svn-win32-libintl.zip, can be used for displaying localized
-        messages. Available at:
-        http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627
-      * [Optional] GNU gettext for generating message catalog (.mo)
-        files from message translations. You can get the latest
-        binaries from http://gnuwin32.sourceforge.net/. You'll need the
-        binaries (gettext-0.14.1-bin.zip) and dependencies
-        (gettext-0.14.1-dep.zip).
-
-  C.2 Notes
-
-      The Apache Serf library supports secure connections with OpenSSL
-      and on-the-wire compression with zlib. If you want to use the
-      secure connections feature, you should pass the option
-      "--with-openssl" to the gen-make.py script. See Section I.C.7 for
-      more details.
-
-  C.3 Preparation
-
-      This section describes how to unpack the files to make a build tree.
-
-      * Make a directory SVN and cd into it.
-      * Either checkout Subversion:
-
-          svn co https://svn.apache.org/repos/asf/subversion/trunk src-trunk
-
-        or unpack the zip file distribution and rename the directory to
-        src-trunk.
-
-      * Install Visual Studio Environment. You either have to tell the
-        installer to register environment variables or run VCVARS32.BAT
-        before building anything.  If you are using a newer Visual Studio,
-        use the 'Visual Studio 20xx Command Prompt' on the Start menu.
-      * Install Python and add it to your path
-      * Install Perl (it should add itself to the path)
-        ### Subversion doesn't need perl. Only some dependencies need it
-            (OpenSSL and some apr scripts)
-      * Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
-        the directory containing it (e.g. SVN\awk) to the path.
-        ### Subversion doesn't need awk. Only some dependencies need it
-            (some apr scripts)
-      * [Optional] Install NASM and add it to your path
-        ### Subversion doesn't need NASM. Only some dependencies need it
-            optionally (OpenSSL)
-      * [Optional] If you checked out Subversion from the repository and want
-        to build Subversion with http/https access support then install the
-        Apache Serf sources into SVN\src-trunk\serf.
-      * [Optional] If you want BDB backend support, extract the Berkeley DB
-        files into SVN\src-trunk\db4-win32. It's a good idea to add
-        SVN\src-trunk\db4-win32\bin to your PATH, so that Subversion can find
-        the Berkeley DB DLLs.
-
-        [NOTE: This binary package of Berkeley DB is provided for
-            convenience only. Please don't address questions about
-            Berkeley DB that aren't directly related to using Subversion
-            to the project mailing list.]
-
-        If you build Berkeley DB from the source, you will have to copy
-        the file db-x.x.x\build_win32\db.h to
-        SVN\src-trunk\db4-win32\include, and all the import libraries to
-        SVN\src-trunk\db4-win32\lib. Again, the DLLs should be somewhere in
-        your path.
-        ### Just use --with-serf instead of the hardcoded path
-
-      * [Optional] If you want to build the server modules, extract Apache
-        source into SVN\httpd-2.x.x.
-      * If you are building from a checkout of Subversion, and you are NOT
-        building Apache, then you will need the APR libraries.  Depending
-        on how you got your version of APR, either:
-          - Extract the APR, APR-util and APR-iconv source distributions into
-            SVN\apr, SVN\apr-util, and SVN\apr-iconv respectively.
-        Or:
-          - Extract the apr, apr-util and apr-iconv directories from the
-            srclib folder in the Apache httpd source into SVN\apr,
-            SVN\apr-util, and SVN\apr-iconv respectively.
-        ### Just use --with-apr, etc. instead of the hardcoded paths
-      * Extract the ZLib sources into SVN\zlib if you are not using the zlib
-        included in the dependencies zip file.
-        ### Just use --with-zlib instead of the hardcoded path
-      * [Optional] If you want secure connection (https) client support extract
-        OpenSSL into SVN\openssl
-        ### And pass the path to both serf and gen-make.py
-      * [Optional] If you want localized message support, extract
-        svn-win32-libintl.zip into SVN\svn-win32-libintl and extract
-        gettext-x.x.x-bin.zip and gettext-x.x.x-dep.zip into
-        SVN\gettext-x.x.x-bin.
-        Add SVN\gettext-x.x.x-bin\bin to your path.        
-      * Download the SQLite amalgamation from
-        https://www.sqlite.org/download.html
-        and extract it into SVN\sqlite-amalgamation.
-        See I.C.2 for alternatives to using the amalgamation package.
-
-  C.4 Building the Binaries
-
-      To build the binaries either follow these instructions.
-
-      Start in the SVN directory you created.
-
-      Set up the environment (commands should be one line even if wrapped 
here).
-
-      C:>set VER=trunk
-      C:>set DIR=trunk
-      C:>set BUILD_ROOT=C:\SVN
-      C:>set PYTHONDIR=C:\Python27
-      C:>set AWKDIR=C:\SVN\Awk
-      C:>set ASMDIR=C:\SVN\asm
-      C:>set SDKINC="C:\Program Files\Microsoft SDK\include"
-      C:>set SDKLIB="C:\Program Files\Microsoft SDK\lib"
-      C:>set GETTEXTBIN=C:\SVN\gettext-0.14.1-bin\bin
-      C:>PATH=%PATH%;%BUILD_ROOT%\src-%DIR%\db4-win32;%ASMDIR%;
-              %PYTHONDIR%;%AWKDIR%;%GETTEXTBIN%
-      C:>set INCLUDE=%SDKINC%;%INCLUDE%
-      C:>set LIB=%SDKLIB%;%LIB%
-
-      OpenSSL < 1.1.0
-
-      C:>cd openssl
-      C:>perl Configure VC-WIN32
-  [*] C:>call ms\do_masm
-      C:>nmake -f ms\ntdll.mak
-      C:>cd out32dll
-      C:>call ..\ms\test
-      C:>cd ..\..
-
-      *Note: Use "call ms\do_nasm" if you have nasm instead of MASM, or
-             "call ms\do_ms" if you don't have an assembler.
-             Also if you are using OpenSSL >= 1.0.0 masm is no longer
-             supported. You will have to use do_nasm or do_ms in this case.
-
-      OpenSSL >= 1.1.0
-
-      C:>cd openssl
-      C:>perl Configure VC-WIN32
-      C:>nmake
-      C:>nmake test
-      C:>cd ..
-
-      Apache 2
-
-      This step is only required for building the server dso modules.
-
-      ### FIXME Apache 2.2 or greater required. Old build instructions for VC6.
-
-      C:>set APACHEDIR=C:\Program Files\Apache Group\Apache2
-      C:>msdev httpd-2.0.58\apache.dsw /MAKE "BuildBin - Win32 Release"
-
-      APR
-
-      If you downloaded APR / APR-UTIL / APR_ICONV by source, you will have to
-      build these libraries first.
-      Building these libraries on Windows is straight forward and in most cases
-      as simple as issuing these two commands:
-
-      C:>nmake -f Makefile.win
-      C:>nmake -f Makefile.win install
-
-      Please refer to the build instructions provided by the library source
-      for actual build instructions.
-
-      ZLib
-
-      If you downloaded the zlib source, you will have to build ZLib first.
-      Building ZLib using Visual Studio should be quite simple. Just open the
-      appropriate solution and build the project zlibstat using the IDE.
-
-      Please refer to the build instructions provided by the library source
-      for actual build instructions.
-
-      Note that you'd make sure to define ZLIB_WINAPI in the ZLib config
-      header and move the lib-file into the zlib root-directory.
-
-      Please note that you MUST NOT build ZLib with the included assembler
-      optimized code. It is known to be buggy, see for example the discussion
-      https://svn.haxx.se/dev/archive-2013-10/0109.shtml.
-      This means that you must not define ASMV or ASMINF. Note that the VS
-      projects in contrib\visualstudio define these in the Debug configuration.
-
-      Apache Serf
-
-      ### Section about Apache Serf might be required/useful to add.
-      ### scons is required too and Apache Serf needs to be configured prior to
-      ### be able to build Subversion using:
-      ### scons APR=[PATH_TO_APR] APU=[PATH_TO_APU] OPENSSL=[PATH_TO_OPENSSL]
-      ### ZLIB=[PATH_TO_ZLIB] PREFIX=[PATH_TO_SERF_DEST]
-      ### scons check
-      ### scons install
-
-      Subversion
-
-      Things to note:
-
-      * If you don't want to build mod_dav_svn, omit the --with-httpd
-        option.  The zip file source distribution contains apr, apr-util and
-        apr-iconv in the default build location. If you have downloaded the
-        apr files yourself you will have to tell the generator where to find
-        the APR libraries; the options are --with-apr, --with-apr-util and
-        --with-apr-iconv.
-      * If you would like a debug build substitute Debug for Release in
-        the msbuild command.
-      * There have been rumors that Subversion on Win32 can be built
-        using the latest cygwin, you probably don't want the zip file source
-        distribution though. ymmv.
-      * You will also have to distribute the C runtime dll with the binaries.
-        Also, since Apache/APR do not provide .vcproj files, you will need to
-        convert the Apache/APR .dsp files to .vcproj files with Visual Studio
-        before building -- just open the Apache .dsw file and answer 'Yes To
-        All' when the conversion dialog pops up, or you can open the individual
-        .dsp files and convert them one at a time.
-        The Apache/APR projects required by Subversion are:
-        apr-util\libaprutil.dsp, apr\libapr.dsp,
-        apr-iconv\libapriconv.dsp, apr-util\xml\expat\lib\xml.dsp,
-        apr-iconv\ccs\libapriconv_ccs_modules.dsp, and
-        apr-iconv\ces\libapriconv_ces_modules.dsp.
-      * If the server dso modules are being built and tested Apache must not
-        be running or the copy of the dso modules will fail.
-
-      C:>cd src-%DIR%
-
-      If Apache 2 has been built and the server modules are required then
-      gen-make.py will already have been run. If the source is from the zip
-      file, Apache 2 has not been built so gen-make.py must be run:
-
-      C:>python gen-make.py --vsnet-version=20xx --with-berkeley-db=db4-win32
-          --with-openssl=..\openssl --with-zlib=..\zlib
-          --with-libintl=..\svn-win32-libintl
-
-      Then build subversion:
-
-      C:>msbuild subversion_vcnet.sln /t:__MORE__ /p:Configuration=Release
-      C:>cd ..
-
-      The binaries have now been built.
-
-  C.5 Packaging the binaries
-
-      You now need to copy the binaries ready to make the release zip
-      file. You also need to do this to run the tests as the new binaries
-      need to be in your path. You can use the build/win32/make_dist.py
-      script in the Subversion source directory to do that.
-
-      [TBD: Describe how to do this. Note dependencies on zip, jar, doxygen.]
-
-  C.6 Testing the Binaries
-      [TBD: It's been a long, long while since it was necessary to move
-            binaries around for testing. win-tests.py does that automagically.
-            Fix this section accordingly, and probably reorder, putting
-            the packaging at the end.]
-
-      The build process creates the binary test programs but it does not
-      copy the client tests into the release test area.
-
-      C:>cd src-%DIR%
-      C:>mkdir Release\subversion\tests\cmdline
-      C:>xcopy /S /Y subversion\tests\cmdline Release\subversion\tests\cmdline
-
-      If the server dso modules  have been built then copy the dso files and
-      dlls into the Apache modules directory.
-
-      C:>copy Release\subversion\mod_dav_svn\mod_dav_svn.so 
"%APACHEDIR%"\modules
-      C:>copy Release\subversion\mod_authz_svn\mod_authz_svn.so
-         "%APACHEDIR%"\modules
-      C:>copy svn-win32-%VER%\bin\intl.dll "%APACHEDIR%\bin"
-      C:>copy svn-win32-%VER%\bin\iconv.dll "%APACHEDIR%\bin"
-      C:>copy svn-win32-%VER%\bin\libdb42.dll "%APACHEDIR%\bin"
-      C:>cd ..
-
-      Put the svn-win32-trunk\bin directory at the start of your path so
-      you run the newly built binaries and not another version you might
-      have installed.
-
-      Then run the client tests:
-
-      C:>PATH=%BUILD_ROOT%\svn-win32-%VER%\bin;%PATH%
-      C:>cd src-%DIR%
-      C:>python win-tests.py -c -r -v
-
-      If the server dso modules were built configure Apache to use the
-      mod_dav_svn and mod_authz_svn modules by making sure these lines appear
-      uncommented in httpd.conf:
-
-        LoadModule dav_module         modules/mod_dav.so
-        LoadModule dav_fs_module      modules/mod_dav_fs.so
-        LoadModule dav_svn_module     modules/mod_dav_svn.so
-        LoadModule authz_svn_module   modules/mod_authz_svn.so
-
-      And further down the file add location directives to point to the
-      test repositories. Change the paths to the SVN directory you created
-      (paths should be on one line even if wrapped here):
-
-        <Location /svn-test-work/repositories>
-         DAV svn
-         SVNParentPath C:/SVN/src-trunk/Release/subversion/tests/cmdline/
-                       svn-test-work/repositories
-        </Location>
-
-        <Location /svn-test-work/local_tmp/repos>
-         DAV svn
-         SVNPath c:/SVN/src-trunk/Release/subversion/tests/cmdline/
-                 svn-test-work/local_tmp/repos
-        </Location>
+      The vcproj/vcxproj files for Visual Studio 2010 - 2022 can be generated
+      with gen-make.py.  The required dependencies have to be present in the
+      system (built or installed) before generating the files.  A minimal
+      gen-make.py command looks like this:
 
-      Then restart Apache and run the tests:
+          C:\SVN\src>python gen-make.py --vsnet-version=2022 ^
+              --with-apr "..\myvcpkg\x64-windows" ^
+              --with-apr-util "..\myvcpkg\x64-windows" ^
+              --with-zlib "..\myvcpkg\x64-windows" ^
+              --with-sqlite "..\myvcpkg\x64-windows"
 
-      C:>python win-tests.py -c -r -v -u http://localhost
-      C:>cd ..
+      The command generates the Visual Studio 2022 solution and project files
+      that can be used with Visual Studio and msbuild.
+
+      The 'python gen-make.py --help' command prints the list of the options
+      available, some of which can be used when generating the project files.
+
+      To run the test suite, build the target __ALL_TESTS__ and run
+
+          C:\SVN\src>python win-tests.py -c -r
+
+      The 'python win-tests.py --help' command prints the list of available
+      options.
 
 
   D.  Running the test suite

Modified: 
subversion/branches/reparentless/subversion/libsvn_ra/wrapper_template.h
==============================================================================
--- subversion/branches/reparentless/subversion/libsvn_ra/wrapper_template.h    
Fri Sep  4 16:08:28 2026        (r1937875)
+++ subversion/branches/reparentless/subversion/libsvn_ra/wrapper_template.h    
Fri Sep  4 16:35:39 2026        (r1937876)
@@ -71,7 +71,12 @@ static svn_error_t *compat_open(void **s
    * the alternative (creating a new ra_util library) would be massive
    * overkill for the time being.  Just be sure to keep the following
    * line and the code of svn_ra_create_callbacks in sync.  */
+
+  /* Some RA modules (libsvn_ra_serf) want this exact pool configuration and
+   * refuse to work with the same pool as both scratch_pool and result_pool. */
   apr_pool_t *sesspool = svn_pool_create(pool);
+  apr_pool_t *scratch_pool = svn_pool_create(sesspool);
+
   svn_ra_callbacks2_t *callbacks2 = apr_pcalloc(sesspool,
                                                 sizeof(*callbacks2));
 
@@ -93,9 +98,11 @@ static svn_error_t *compat_open(void **s
   SVN_ERR(VTBL.open_session(sess, &session_url, NULL, repos_URL,
                             callbacks2, callback_baton,
                             callbacks ? callbacks->auth_baton : NULL,
-                            config, sesspool, sesspool));
+                            config, sesspool, scratch_pool));
+
+  svn_pool_destroy(scratch_pool);
 
-  if (strcmp(repos_URL, session_url) != 0)
+  if (session_url && strcmp(repos_URL, session_url) != 0)
     {
       svn_pool_destroy(sesspool);
       return svn_error_createf(SVN_ERR_RA_SESSION_URL_MISMATCH, NULL,

Modified: subversion/branches/reparentless/subversion/tests/libsvn_ra/ra-test.c
==============================================================================
--- subversion/branches/reparentless/subversion/tests/libsvn_ra/ra-test.c       
Fri Sep  4 16:08:28 2026        (r1937875)
+++ subversion/branches/reparentless/subversion/tests/libsvn_ra/ra-test.c       
Fri Sep  4 16:35:39 2026        (r1937876)
@@ -23,6 +23,9 @@
 
 
 
+#include "../svn_test.h"
+#include "../svn_test_fs.h"
+
 #include <apr_general.h>
 #include <apr_pools.h>
 #include <apr_file_io.h>
@@ -37,8 +40,6 @@
 #include "svn_dirent_uri.h"
 #include "svn_hash.h"
 
-#include "../svn_test.h"
-#include "../svn_test_fs.h"
 #include "../../libsvn_ra_local/ra_local.h"
 
 /*-------------------------------------------------------------------*/
@@ -1915,6 +1916,49 @@ test_get_deleted_rev_errors(const svn_te
 }
 
 static svn_error_t *
+test_compat_vtable(const svn_test_opts_t *opts,
+                   apr_pool_t *pool)
+{
+  svn_ra_plugin_t *lib;
+  void *ra_baton, *session_baton, *edit_baton, *root_baton, *dir_baton;
+  const svn_delta_editor_t *editor;
+  const char *url;
+  svn_ra_callbacks_t cbtable = { 0 };
+
+  SVN_ERR(svn_test__create_repos2(NULL, &url, NULL, "test_compat_vtable", opts,
+                                  pool, pool));
+  SVN_ERR(svn_ra_initialize(pool));
+
+  SVN_ERR(svn_ra_init_ra_libs(&ra_baton, pool));
+  SVN_ERR(svn_ra_get_ra_library(&lib, ra_baton, url, pool));
+
+  SVN_ERR(svn_test__init_auth_baton(&cbtable.auth_baton, pool));
+  SVN_ERR(lib->open(&session_baton, url, &cbtable, NULL, NULL, pool));
+
+  /* mkdir A */
+  SVN_ERR(lib->get_commit_editor(session_baton, &editor, &edit_baton,
+                                 "r1", NULL, NULL, pool));
+  SVN_ERR(editor->open_root(edit_baton, SVN_INVALID_REVNUM,
+                            pool, &root_baton));
+  SVN_ERR(editor->add_directory("A", root_baton, NULL, SVN_INVALID_REVNUM,
+                               pool, &dir_baton));
+  SVN_ERR(editor->close_directory(dir_baton, pool));
+  SVN_ERR(editor->close_directory(root_baton, pool));
+  SVN_ERR(editor->close_edit(edit_baton, pool));
+
+  /* delete A */
+  SVN_ERR(lib->get_commit_editor(session_baton, &editor, &edit_baton,
+                                 "r2", NULL, NULL, pool));
+  SVN_ERR(editor->open_root(edit_baton, SVN_INVALID_REVNUM,
+                            pool, &root_baton));
+  SVN_ERR(editor->delete_entry("A", SVN_INVALID_REVNUM, root_baton, pool));
+  SVN_ERR(editor->close_directory(root_baton, pool));
+  SVN_ERR(editor->close_edit(edit_baton, pool));
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
 test_reparent(const svn_test_opts_t *opts,
               apr_pool_t *pool)
 {
@@ -2018,6 +2062,8 @@ static struct svn_test_descriptor_t test
                        "test get-deleted-rev no delete"),
     SVN_TEST_OPTS_PASS(test_get_deleted_rev_errors,
                        "test get-deleted-rev errors"),
+    SVN_TEST_OPTS_PASS(test_compat_vtable,
+                       "test compat svn_ra_plugin_t"),
     SVN_TEST_OPTS_PASS(test_reparent,
                        "test session reparent"),
     SVN_TEST_NULL

Reply via email to