Jordan Peck <jordan.me2@gmail.com> (jpeck)
r1935663 | jpeck | 2026-06-26 15:10:09 +0000 (Fri, 26 Jun 2026)
Add myself to COMMITTERS
r1935828 | jpeck | 2026-07-03 10:42:05 +0000 (Fri, 03 Jul 2026)
Create branch for mod_dav_svn proxy fix for move/copy operations
See: https://lists.apache.org/thread/blwxmspvj4k97zdhhqs43sml39hmy04x
r1935830 | jpeck | 2026-07-03 11:11:39 +0000 (Fri, 03 Jul 2026)
Harden the DAV mirror tests in dav-mirror-autocheck.sh:
- Use distinct master/slave locations so the proxy actually translates paths
- Assert the decoded "branch new/" name in the master repo
rather than only checking commit exit status (a double-encoded
destination could otherwise pass silently)
- Drop the removed neon http-library option and libsvn_ra_neon from LD_LIBRARY_PATH
- Switch the exit-status checks to the "|| fail" idiom
r1935831 | jpeck | 2026-07-03 11:22:47 +0000 (Fri, 03 Jul 2026)
Fix mod_dav_svn write-through proxy mangling of COPY/MOVE Destination headers.
See: https://lists.apache.org/thread/blwxmspvj4k97zdhhqs43sml39hmy04x
When proxying a COPY or MOVE to the master, the Destination header still
pointed at the slave and was never translated, so cross-location commits
(and paths containing characters like spaces) failed or were mis-encoded.
Adds a new helper function proxy_request_fixup_destination() that rewrites
a request's destination header from the slave location to the master URI,
keeping the path encoded exactly once.
r1935843 | jpeck | 2026-07-03 14:35:34 +0000 (Fri, 03 Jul 2026)
Run dav-mirror-autocheck.sh (mod_dav_svn) tests in davautocheck.sh
r1935844 | jpeck | 2026-07-03 14:37:23 +0000 (Fri, 03 Jul 2026)
Add tests to dav-mirror-autocheck.sh to catch SVN-3445
Tests committing a file with:
- Master server URL: PASS
- Slave server URL: XFAIL
r1935857 | jpeck | 2026-07-03 18:48:06 +0000 (Fri, 03 Jul 2026)
Create branch for svnsync atomic author/timestamp when syncing to a file:// path
See discussion here: https://lists.apache.org/thread/qnxqd4whjp62rk2pgndt8xyp40oqnom2
r1935862 | jpeck | 2026-07-03 20:59:45 +0000 (Fri, 03 Jul 2026)
On the 'svnsync-atomic-author' branch:
Let svnsync set svn:author and svn:date in the commit itself when the
destination supports it, instead of patching them up with a post-commit
revprop change. This makes mirroring a revision atomic for ra_local
destinations and removes the window where a mirrored revision briefly
carries the wrong author and date.
See discussion: https://lists.apache.org/thread/qnxqd4whjp62rk2pgndt8xyp40oqnom2
Introduce SVN_RA_CAPABILITY_COMMIT_PRESERVES_AUTHOR_DATE, advertised by
ra_local and wired through the standard capability negotiation for svn://
and http:// so future servers can opt in without client changes. Rev the
repos-layer commit APIs to carry transaction flags (SVN_FS_TXN_CLIENT_DATE).
* subversion/include/svn_ra.h
(SVN_RA_CAPABILITY_COMMIT_PRESERVES_AUTHOR_DATE): New capability.
(svn_ra_get_commit_editor3): Allow svn:author/svn:date in REVPROP_TABLE
when the session advertises the new capability.
* subversion/include/svn_ra_svn.h
(SVN_RA_SVN_CAP_COMMIT_PRESERVES_AUTHOR_DATE): New wire capability.
* subversion/include/svn_dav.h
(SVN_DAV_NS_DAV_SVN_COMMIT_PRESERVES_AUTHOR_DATE): New OPTIONS header token.
* subversion/include/svn_repos.h
(svn_repos_get_commit_editor6, svn_repos_fs_begin_txn_for_commit3): New,
taking TXN_FLAGS.
(svn_repos_get_commit_editor5, svn_repos_fs_begin_txn_for_commit2):
Deprecate.
* subversion/include/private/svn_repos_private.h
(svn_repos__get_commit_ev2): Take TXN_FLAGS.
* subversion/libsvn_repos/commit.c
(edit_baton): Add TXN_FLAGS.
(open_root): Pass them to svn_repos_fs_begin_txn_for_commit3().
(svn_repos_get_commit_editor6, svn_repos__get_commit_ev2): Accept and
forward TXN_FLAGS.
* subversion/libsvn_repos/fs-wrap.c
(svn_repos_fs_begin_txn_for_commit3): New revision of ..._commit2(),
OR-ing TXN_FLAGS into SVN_FS_TXN_CHECK_LOCKS.
(svn_repos_fs_begin_txn_for_commit): Move to deprecated.c.
* subversion/libsvn_repos/deprecated.c
(svn_repos_get_commit_editor5, svn_repos_fs_begin_txn_for_commit2,
svn_repos_fs_begin_txn_for_commit): Implement as wrappers.
* subversion/libsvn_ra_local/ra_plugin.c
(prepare_commit_revprops): New helper: default svn:author to the session
username only when absent, and request SVN_FS_TXN_CLIENT_DATE iff the
caller supplied svn:date.
(svn_ra_local__get_commit_editor, svn_ra_local__get_commit_ev2): Use it.
(svn_ra_local__has_capability): Advertise the new capability.
* subversion/libsvn_ra_svn/client.c
(ra_svn_has_capability): Map the new capability to its wire word.
* subversion/libsvn_ra_serf/options.c
(capabilities_headers_iterator_callback, options_response_handler):
Parse and pre-seed the new capability.
* subversion/mod_dav_svn/activity.c (dav_svn__create_txn),
subversion/mod_dav_svn/lock.c (append_locks),
subversion/svnserve/serve.c (commit):
Track the API revs; no functional change.
* subversion/svnsync/svnsync.c
(is_svnsync_prop): New helper.
(replay_baton_t, resolve_revprop_handling): Resolve once per sync how
revprops split between the commit and a follow-up revprop update.
(replay_rev_started, replay_rev_finished, do_synchronize): Use that
decision; skip the follow-up pass entirely when the commit carries
author/date.
* subversion/tests/libsvn_repos/repos-test.c
(commit_add_file, commit_editor_preserve_revprops): New test for both
SVN_FS_TXN_CLIENT_DATE polarities via the commit editor.
* subversion/tests/cmdline/svnsync_tests.py
(sync_to_local_preserves_author_date): New test: an ra_local sync
preserves author/date with no post-commit revprop copy.