The GitHub Actions job "autoconf" on subversion.git/svnsync-atomic-author has succeeded. Run started by GitHub user asf-gitbox-commits (triggered by asf-gitbox-commits).
Head commit for run: e38fe913f994ac20a7b9d0ea50c5e7b14b606fa3 / Jordan Peck <[email protected]> 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 * is committed; otherwise it will be overwritten with the commit * * @since New in 1.16. svn_repos_t *repos, t32_t txn_flags, apr_pool_t *pool); /** Like svn_repos_fs_begin_txn_for_commit3(), but with @a flags /** Like svn_repos_fs_begin_txn_for_commit3(), but with @a txn_flags * set to #SVN_FS_TXN_CHECK_LOCKS only. * * @note @a revprop_table may contain an #SVN_PROP_REVISION_DATE property, Read 1 file ● Update(subversion\libsvn_repos\fs-wrap.c) Added 1 line, removed 1 line svn_repos_t *repos, svn_revnum_t rev, _t *pool) { apr_array_header_t *revprops; ● Update(subversion\libsvn_repos\fs-wrap.c) Added 1 line, removed 1 line /* Begin the transaction, ask for the fs to do on-the-fly lock checks. We fetch its name, too, so the start-commit hook can use it. */ SVN_ERR(svn_fs_begin_txn2(&txn, repos->fs, rev, SVN_FS_TXN_CHECK_LOCKS | flags, pool)); SVN_FS_TXN_CHECK_LOCKS | txn_flags, poo err = svn_fs_txn_name(&txn_name, txn, pool); if (err) return svn_error_compose_create(err, svn_fs_abort_txn(txn, pool)); Fix 5c — state commit_callback nullability on editor6 directly (replacing the stale pre-1.6 parenthetical): ● Update(subversion\include\svn_repos.h) Added 1 line, removed 2 lines * returns an error, that error will be returned from @c close_edit, * otherwise if there was a post-commit hook failure, then that error * will be returned with code SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED. * (Note that prior to Subversion 1.6, @a commit_callback cannot be @c NULL; * if you don't need a callback, pass a dummy function.) * @a commit_callback may be @c NULL. * * Calling @a (*editor)->abort_edit aborts the commit, and will also * abort the commit transaction unless @a txn was supplied (not @c You've hit your session limit · resets 9:50pm (Europe/London) /upgrade or /usage-credits to finish what you’re working on. ✻ Baked for 5m 21s ❯ Can you put together a brief commit message for this change Here's a commit message in the Apache Subversion log-message convention (summary paragraph plus per-file annotations), ready for svn commit -F: 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 ent 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): * 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 (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 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. git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/svnsync-atomic-author@1935862 13f79535-47bb-0310-9956-ffa450edef68 Report URL: https://github.com/apache/subversion/actions/runs/28683160838 With regards, GitHub Actions via GitBox
