Sergey Raevskiy <>

Found Patch
r1579588 r1872381, r1865266, r1853483, r1811992, r1659314, r1659217, r1659212, r1658482, r1657893, r1657525, r1584576

r1579588 | rhuijben | 2014-03-20 10:59:21 +0000 (Thu, 20 Mar 2014)

Make ra serf properly parse lock timeouts installed by generic dav clients.

* subversion/libsvn_ra_serf/get_lock.c
  (locks_closed): Properly parse timout format. This is the actual fix.

* subversion/libsvn_ra_serf/lock.c
  (locks_closed): Properly parse timeout format from the server response of
    the LOCK requests.

* subversion/tests/cmdline/
  (dav_lock_timeout): New test, creating timeout lock via http request.
  (test_list): Add test.

This issue was
Found by: Sergey Raevskiy <sergey.raevskiy{_AT_}>
(but the patch from his mail doesn't fix the issue on trunk.
 It might have worked around the problem on 1.7.x and 1.8.x)

r1584576 | philip | 2014-04-04 09:25:03 +0000 (Fri, 04 Apr 2014)

Add an XFAIL regression test for issue 3515, a DAV client cannot
refresh a lock using a LOCK request with an If: header.

Patch by: Sergey Raevskiy <sergey.raevskiy{_AT_}>

r1657525 | philip | 2015-02-05 10:41:26 +0000 (Thu, 05 Feb 2015)

Fix unitialized memory use in svn_fs_fs__lock() / svn_fs_fs__unlock().

Patch by: sergey.raevskiy{_AT_}

* subversion/subversion/libsvn_fs_fs/lock.c
  (lock_body): Move allocation from here ...
  (svn_fs_fs__lock): ... to here.
  (unlock_body): Move allocation from here ...
  (unlock_single, svn_fs_fs__unlock): ... to here.

* subversion/subversion/tests/libsvn_fs/locks-test.c
  (obtain_write_lock_failure_test): New.
  (test_funcs): Add new test.

r1657893 | philip | 2015-02-06 16:43:12 +0000 (Fri, 06 Feb 2015)

Fix SEGV in libsvn_repos due to legacy lock API when executing
pre-commit hook.

* subversion/subversion/libsvn_repos/hooks.c
  (lock_token_content): Add special handling for 'magic' value
   ((const char *) 1).

* subversion/subversion/tests/libsvn_repos/repos-test.c
  (deprecated_access_context_api): New.
  (test_funcs): Add new test.

Patch by: sergey.raevskiy{_AT_}

r1658482 | philip | 2015-02-09 17:44:43 +0000 (Mon, 09 Feb 2015)

Fix multiple reporting of the same lock in FSFS.

In some unusual (but not impossible) scenarios this function could report the
same lock multiple times: there should be the path with lock, and one of its
children should be locked as well.

* subversion/libsvn_fs_fs/lock.c
  (walk_digests_callback_t): Remove unused argument and update comment.
  (locks_walker): Update callback.
  (walk_digest_files): Don't walk digest files recursively.

* subversion/tests/libsvn_fs/locks-test.c
  (get_locks_callback): Check if a lock was already reported.
  (parent_and_child_lock): New.
  (test_funcs): Add new test.

Patch by: sergey.raevskiy{_AT_}

r1659212 | philip | 2015-02-12 10:38:48 +0000 (Thu, 12 Feb 2015)

Simplify implementation of svn_fs_fs__lock() / svn_fs_fs__unlock().

* subversion/libsvn_fs_fs/lock.c
  (schedule_index_update): New helper function.
  (struct lock_info_t,
   struct unlock_info_t): Drop the unused fields.
   unlock_body): Rework the algorithm.

Patch by: sergey.raevskiy{_AT_}

r1659217 | philip | 2015-02-12 10:42:45 +0000 (Thu, 12 Feb 2015)

Follow-up to r1658482: Refactor walk_locks() function: remove the redundant
complexity of walk_digest_files() / walk_digests_callback_t.

* subversion/libsvn_fs_fs/lock.c
  (lock_expired): New helper function.
  (get_lock): Use the new function.
  (struct walk_locks_baton,
   walk_digest_files): Remove.
  (walk_locks): Inline code from locks_walker() and walk_digest_files() with
    use of new helper function.

Patch by: sergey.raevskiy{_AT_}

r1659314 | philip | 2015-02-12 16:48:46 +0000 (Thu, 12 Feb 2015)

* subversion/libsvn_fs_fs/lock.c
  (lock_body): Call apr_pstrdup() when initializing svn_lock_t fields.

Patch by: sergey.raevskiy{_AT_}

r1811992 | julianfoad | 2017-10-12 16:14:05 +0000 (Thu, 12 Oct 2017)

Issue SVN-4729: Add '--include' and '--exclude' options to 'svnadmin dump'.

* include/svn_repos.h
  (svn_repos_dump_filter_func_t): New.
  (svn_repos_dump_fs4): Update function signature and comment.
  (svn_repos_dump_fs3): Update comment.

* libsvn_repos/deprecated.c
  (svn_repos_dump_fs3): Update caller.

* libsvn_repos/dump.c
  (write_revision_record): Call to svn_repos_fs_revision_proplist() (with
   AUTHZ_FUNC) instead of svn_fs_revision_proplist2() to filter revision
   properties as well as revisions. Update comment.
   dump_filter_authz_func): New.
  (svn_repos_dump_fs4): Initialize and pass AUTHZ_FUNC and AUTHZ_BATON to
   the repos layer API if FILTER_FUNC is specified by caller.

* subversion/svnadmin/svnadmin.c
  (svnadmin__cmdline_options_t): Add enum values for new options.
  (options_table): Add new options.
  (cmd_table): Add new options to 'dump' subcommand.
  (svnadmin_opt_state): Add new fields to represent new options.
  (ary_prefix_match): New. Copied from svndumpfilter.
   dump_filter_func): New.
  (subcommand_dump): Initialize FILTER_BATON.  Pass DUMP_FILTER_FUNC and a
   pointer to FILTER_BATON to svn_repos_dump_fs() if any filtering prefixes
  (sub_main): Handle new options.

* subversion/tests/cmdline/
   dump_invalid_filtering_option): New.
  (test_list): Add new tests to table.

* subversion/tests/libsvn_repos/dump-load-test.c
  (test_dump_bad_props): Update caller.

Patch by: sergey.raevskiy{_AT_}

r1853483 | julianfoad | 2019-02-13 10:37:50 +0000 (Wed, 13 Feb 2019)

Fix #4760 "Missing children when svnadmin dump --include/exclude converts
copy-dir to add-dir".

Follow-up to r1811992: Canonicalize PATH before passing it to the FILTER_FUNC.

In some cases (e.g. for nodes under copied directories) PATH passed by
repos layer to AUTHZ_FUNC may be non-canonical (missing leading '/').  This
causes FILTER_FUNC implemented in svnadmin to wrongly report PATH as "not

* subversion/libsvn_repos/dump.c
  (dump_filter_authz_func): Canonicalize PATH before passing it
    to the FILTER_FUNC.  Add comment.

* subversion/tests/cmdline/
  (dump_include_copied_directory): New.
  (test_list): Add new test to table.

Patch by: sergey.raevskiy{_AT_}

r1865266 | stsp | 2019-08-16 06:02:53 +0000 (Fri, 16 Aug 2019)

* subversion/mod_dav_svn/repos.c
  (get_resource): Following up on r1850651: Set cleanup handler for
   FS warning logging regardless of presence of R->USER.

Patch by: sergey.raevskiy{_AT_}

r1872381 | hartmannathan | 2020-01-06 14:08:39 +0000 (Mon, 06 Jan 2020)

Rework r1866425 ('Last-Modified' header).  Do not use pointer comparison
and 'special value' for APR_TIME_T.

* subversion/mod_dav_svn/dav_svn.h
  (dav_resource_private): Add new member IS_PUBLIC_URI.

* subversion/mod_dav_svn/repos.c
   get_parentpath_resource): Set IS_PUBLIC_URI to TRUE for 'public' URIs (not
   under '/!svn/')
  (get_last_modified): Delete.
  (set_headers): Rework of 'Last-Modified' related code.

See dev@ email thread "[Patch] Rework of r1866425 ('Last-Modified' header)"
started 2019/12/10, archived at several places, including:

Patch by: sergey.raevskiy{_AT_}