Index: subversion/libsvn_ra/wrapper_template.h =================================================================== --- subversion/libsvn_ra/wrapper_template.h (revision 16627) +++ subversion/libsvn_ra/wrapper_template.h (working copy) @@ -37,6 +37,7 @@ #error Missing define for RA compatibility wrapper. #endif + static svn_error_t *compat_open (void **session_baton, const char *repos_URL, const svn_ra_callbacks_t *callbacks, @@ -128,8 +129,15 @@ void *callback_baton, apr_pool_t *pool) { + svn_commit_callback2_t callback2 = NULL; + void *callback2_baton = NULL; + + svn_compat_wrap_commit_callback (callback, callback_baton, + &callback2, &callback2_baton, + pool); return VTBL.get_commit_editor (session_baton, editor, edit_baton, log_msg, - callback, callback_baton, NULL, TRUE, pool); + callback2, callback2_baton, + NULL, TRUE, pool); } static svn_error_t *compat_get_file (void *session_baton, Index: subversion/libsvn_ra/ra_loader.c =================================================================== --- subversion/libsvn_ra/ra_loader.c (revision 16627) +++ subversion/libsvn_ra/ra_loader.c (working copy) @@ -28,6 +28,7 @@ #include #include "svn_version.h" +#include "svn_types.h" #include "svn_error.h" #include "svn_pools.h" #include "svn_ra.h" @@ -220,7 +221,6 @@ return SVN_NO_ERROR; } - /* -------------------------------------------------------------- */ /*** Public Interfaces ***/ @@ -362,6 +362,21 @@ return session->vtable->rev_prop (session, rev, name, value, pool); } +svn_error_t *svn_ra_get_commit_editor2 (svn_ra_session_t *session, + const svn_delta_editor_t **editor, + void **edit_baton, + const char *log_msg, + svn_commit_callback2_t callback, + void *callback_baton, + apr_hash_t *lock_tokens, + svn_boolean_t keep_locks, + apr_pool_t *pool) +{ + return session->vtable->get_commit_editor (session, editor, edit_baton, + log_msg, callback, callback_baton, + lock_tokens, keep_locks, pool); +} + svn_error_t *svn_ra_get_commit_editor (svn_ra_session_t *session, const svn_delta_editor_t **editor, void **edit_baton, @@ -372,9 +387,17 @@ svn_boolean_t keep_locks, apr_pool_t *pool) { - return session->vtable->get_commit_editor (session, editor, edit_baton, - log_msg, callback, callback_baton, - lock_tokens, keep_locks, pool); + svn_commit_callback2_t callback2 = NULL; + void *callback2_baton = NULL; + + svn_compat_wrap_commit_callback (callback, callback_baton, + &callback2, &callback2_baton, + pool); + + return svn_ra_get_commit_editor2 (session, editor, edit_baton, + log_msg, callback2, + callback2_baton, lock_tokens, + keep_locks, pool); } svn_error_t *svn_ra_get_file (svn_ra_session_t *session, Index: subversion/libsvn_ra/ra_loader.h =================================================================== --- subversion/libsvn_ra/ra_loader.h (revision 16627) +++ subversion/libsvn_ra/ra_loader.h (working copy) @@ -80,7 +80,7 @@ const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, Index: subversion/include/svn_repos.h =================================================================== --- subversion/include/svn_repos.h (revision 16627) +++ subversion/include/svn_repos.h (working copy) @@ -667,9 +667,32 @@ * NULL). Callers who supply their own transactions are responsible * for cleaning them up (either by committing them, or aborting them). * - * @since New in 1.3. + * @since New in 1.4 */ svn_error_t * +svn_repos_get_commit_editor4 (const svn_delta_editor_t **editor, + void **edit_baton, + svn_repos_t *repos, + svn_fs_txn_t *txn, + const char *repos_url, + const char *base_path, + const char *user, + const char *log_msg, + svn_commit_callback2_t callback, + void *callback_baton, + svn_repos_authz_callback_t authz_callback, + void *authz_baton, + apr_pool_t *pool); + +/** + * Similar to svn_repos_get_commit_editor4(), but + * uses the svn_commit_callback_t. + * + * @since New in 1.3 + * + * @deprecated Provided for backward compatibility with the 1.3 API. + */ +svn_error_t * svn_repos_get_commit_editor3 (const svn_delta_editor_t **editor, void **edit_baton, svn_repos_t *repos, Index: subversion/include/svn_types.h =================================================================== --- subversion/include/svn_types.h (revision 16627) +++ subversion/include/svn_types.h (working copy) @@ -339,6 +339,23 @@ svn_create_commit_info (apr_pool_t *pool); +/** + * Perform a deep copy of the @c svn_commit_info_t structure + * from @a src_commit_info to @a dst_commit_info. + * + * @note @c svn_commit_info structure thats returned is allocated + * from the @a pool. + * + * This is to provide for extending the svn_commit_info_t in + * the future. + * + * @since New in 1.4 + */ +svn_commit_info_t * +svn_commit_info_dup (const svn_commit_info_t *src_commit_info, + apr_pool_t *pool); + + /** A structure to represent a path that changed for a log entry. */ typedef struct svn_log_changed_path_t { @@ -407,7 +424,19 @@ * When a commit succeeds, an instance of this is invoked on the @a * new_revision, @a date, and @a author of the commit, along with the * @a baton closure. + * + * @since New in 1.4 */ +typedef svn_error_t * (*svn_commit_callback2_t) ( + const svn_commit_info_t *commit_info, + void *baton); + + +/** Same as svn_commit_callback2_t, but uses individual + * data elements instead of the svn_commit_info_t structure + * + * @deprecated Provided for backward compatibility with the 1.3 API. + */ typedef svn_error_t * (*svn_commit_callback_t) ( svn_revnum_t new_revision, const char *date, @@ -415,6 +444,14 @@ void *baton); +/* for compatibility with svn_commit_callback_t */ +void *svn_compat_wrap_commit_callback (svn_commit_callback_t callback, + void *callback_baton, + svn_commit_callback2_t *callback2, + void **callback2_baton, + apr_pool_t *pool); + + /** The maximum amount we (ideally) hold in memory at a time when * processing a stream of data. * Index: subversion/include/svn_ra.h =================================================================== --- subversion/include/svn_ra.h (revision 16627) +++ subversion/include/svn_ra.h (working copy) @@ -576,8 +576,23 @@ * * Use @a pool for memory allocation. * - * @since New in 1.2. + * @since New in 1.4 */ +svn_error_t *svn_ra_get_commit_editor2 (svn_ra_session_t *session, + const svn_delta_editor_t **editor, + void **edit_baton, + const char *log_msg, + svn_commit_callback2_t callback, + void *callback_baton, + apr_hash_t *lock_tokens, + svn_boolean_t keep_locks, + apr_pool_t *pool); + +/** + * Same as svn_ra_get_commit_editor2, but uses svn_commit_callback_t. + * + * @deprecated Provided for backward compatibility with the 1.3 API. + */ svn_error_t *svn_ra_get_commit_editor (svn_ra_session_t *session, const svn_delta_editor_t **editor, void **edit_baton, Index: subversion/libsvn_subr/constructors.c =================================================================== --- subversion/libsvn_subr/constructors.c (revision 16627) +++ subversion/libsvn_subr/constructors.c (working copy) @@ -34,6 +34,21 @@ return commit_info; } +svn_commit_info_t * +svn_commit_info_dup (const svn_commit_info_t *src_commit_info, + apr_pool_t *pool) +{ + svn_commit_info_t *dst_commit_info = svn_create_commit_info (pool); + + dst_commit_info->date = src_commit_info->date ? + apr_pstrdup (pool, src_commit_info->date) : NULL; + dst_commit_info->author = src_commit_info->author ? + apr_pstrdup (pool, src_commit_info->author) : NULL; + dst_commit_info->revision = src_commit_info->revision; + + return dst_commit_info; +} + svn_log_changed_path_t * svn_log_changed_path_dup (const svn_log_changed_path_t *changed_path, apr_pool_t *pool) Index: subversion/libsvn_subr/compat.c =================================================================== --- subversion/libsvn_subr/compat.c (revision 0) +++ subversion/libsvn_subr/compat.c (revision 0) @@ -0,0 +1,62 @@ +/* + * compat.c : Wrappers and callbacks for compatibility. + * + * ==================================================================== + * Copyright (c) 2005 CollabNet. All rights reserved. + * + * This software is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at http://subversion.tigris.org/license-1.html. + * If newer versions of this license are posted there, you may use a + * newer version instead, at your option. + * + * This software consists of voluntary contributions made by many + * individuals. For exact contribution history, see the revision + * history and logs, available at http://subversion.tigris.org/. + * ==================================================================== + */ + +#include +#include + +#include "svn_types.h" +#include "svn_error.h" + + +struct commit_wrapper_baton { + void *baton; + svn_commit_callback_t callback; +}; + +svn_error_t *commit_wrapper_callback (const svn_commit_info_t *commit_info, + void *baton) +{ + struct commit_wrapper_baton *cwb = baton; + + if (cwb->callback) + return cwb->callback (commit_info->revision, + commit_info->date, + commit_info->author, + cwb->baton); + + return SVN_NO_ERROR; +} + +void *svn_compat_wrap_commit_callback (svn_commit_callback_t callback, + void *callback_baton, + svn_commit_callback2_t *callback2, + void **callback2_baton, + apr_pool_t *pool) +{ + struct commit_wrapper_baton *cwb = apr_pcalloc (pool, sizeof (*cwb)); + + /* Set the user provided old format callback in the baton */ + cwb->baton = callback_baton; + cwb->callback = callback; + + *callback2_baton = (void *) cwb; + *callback2 = commit_wrapper_callback; + + return; +} + Index: subversion/libsvn_ra_local/ra_plugin.c =================================================================== --- subversion/libsvn_ra_local/ra_plugin.c (revision 16627) +++ subversion/libsvn_ra_local/ra_plugin.c (working copy) @@ -408,7 +408,7 @@ const char *fs_path; /* fs-path part of split session URL */ apr_hash_t *lock_tokens; /* tokens to unlock, if any */ apr_pool_t *pool; /* pool for scratch work */ - svn_commit_callback_t callback; /* the original callback */ + svn_commit_callback2_t callback; /* the original callback */ void *callback_baton; /* the original callback's baton */ }; @@ -417,9 +417,7 @@ possibly unlocks committed paths. BATON is 'struct deltify_etc_baton *'. */ static svn_error_t * -deltify_etc (svn_revnum_t new_revision, - const char *date, - const char *author, +deltify_etc (const svn_commit_info_t *commit_info, void *baton) { struct deltify_etc_baton *db = baton; @@ -430,7 +428,7 @@ /* Invoke the original callback first, in case someone's waiting to know the revision number so they can go off and annotate an issue or something. */ - err1 = (*db->callback) (new_revision, date, author, db->callback_baton); + err1 = (*db->callback) (commit_info, db->callback_baton); /* Maybe unlock the paths. */ if (db->lock_tokens) @@ -459,7 +457,7 @@ /* But, deltification shouldn't be stopped just because someone's random callback failed, so proceed unconditionally on to deltification. */ - err2 = svn_fs_deltify_revision (db->fs, new_revision, db->pool); + err2 = svn_fs_deltify_revision (db->fs, commit_info->revision, db->pool); /* It's more interesting if the original callback failed, so let that one dominate. */ @@ -478,7 +476,7 @@ const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, @@ -525,7 +523,7 @@ } /* Get the repos commit-editor */ - SVN_ERR (svn_repos_get_commit_editor3 + SVN_ERR (svn_repos_get_commit_editor4 (editor, edit_baton, sess_baton->repos, NULL, svn_path_uri_decode (sess_baton->repos_url, pool), sess_baton->fs_path, Index: subversion/libsvn_client/delete.c =================================================================== --- subversion/libsvn_client/delete.c (revision 16627) +++ subversion/libsvn_client/delete.c (working copy) @@ -185,11 +185,11 @@ /* Fetch RA commit editor */ SVN_ERR (svn_client__commit_get_baton (&commit_baton, commit_info_p, pool)); - SVN_ERR (svn_ra_get_commit_editor (ra_session, &editor, &edit_baton, - log_msg, svn_client__commit_callback, - commit_baton, - NULL, TRUE, /* No lock tokens */ - pool)); + SVN_ERR (svn_ra_get_commit_editor2 (ra_session, &editor, &edit_baton, + log_msg, svn_client__commit_callback, + commit_baton, + NULL, TRUE, /* No lock tokens */ + pool)); /* Call the path-based editor driver. */ err = svn_delta_path_driver (editor, edit_baton, SVN_INVALID_REVNUM, Index: subversion/libsvn_client/client.h =================================================================== --- subversion/libsvn_client/client.h (revision 16627) +++ subversion/libsvn_client/client.h (working copy) @@ -258,9 +258,7 @@ pointed by commit_baton. If the commit_info supplied by get_baton points to NULL after close_edit, it means the commit is a no-op. */ -svn_error_t *svn_client__commit_callback (svn_revnum_t revision, - const char *date, - const char *author, +svn_error_t *svn_client__commit_callback (const svn_commit_info_t *commit_info, void *baton); /* ---------------------------------------------------------------- */ Index: subversion/libsvn_client/copy.c =================================================================== --- subversion/libsvn_client/copy.c (revision 16627) +++ subversion/libsvn_client/copy.c (working copy) @@ -449,11 +449,11 @@ /* Fetch RA commit editor. */ SVN_ERR (svn_client__commit_get_baton (&commit_baton, commit_info_p, pool)); - SVN_ERR (svn_ra_get_commit_editor (ra_session, &editor, &edit_baton, message, - svn_client__commit_callback, - commit_baton, - NULL, TRUE, /* No lock tokens */ - pool)); + SVN_ERR (svn_ra_get_commit_editor2 (ra_session, &editor, &edit_baton, message, + svn_client__commit_callback, + commit_baton, + NULL, TRUE, /* No lock tokens */ + pool)); /* Setup our PATHS for the path-based editor drive. */ APR_ARRAY_PUSH (paths, const char *) = dst_rel; @@ -705,12 +705,12 @@ /* Fetch RA commit editor. */ SVN_ERR (svn_client__commit_get_baton (&commit_baton, commit_info_p, pool)); - if ((cmt_err = svn_ra_get_commit_editor (ra_session, &editor, &edit_baton, - message, - svn_client__commit_callback, - commit_baton, - NULL, TRUE, /* No lock tokens */ - pool))) + if ((cmt_err = svn_ra_get_commit_editor2 (ra_session, &editor, &edit_baton, + message, + svn_client__commit_callback, + commit_baton, + NULL, TRUE, /* No lock tokens */ + pool))) goto cleanup; /* Make a note that we have a commit-in-progress. */ Index: subversion/libsvn_client/commit_util.c =================================================================== --- subversion/libsvn_client/commit_util.c (revision 16627) +++ subversion/libsvn_client/commit_util.c (working copy) @@ -1337,18 +1337,12 @@ return SVN_NO_ERROR; } -svn_error_t *svn_client__commit_callback (svn_revnum_t revision, - const char *date, - const char *author, - void *baton) +svn_error_t *svn_client__commit_callback (const svn_commit_info_t *commit_info, + void *baton) { struct commit_baton *cb = baton; - svn_commit_info_t **info = cb->info; - *info = svn_create_commit_info (cb->pool); - (*info)->date = date ? apr_pstrdup (cb->pool, date) : NULL; - (*info)->author = author ? apr_pstrdup (cb->pool, author) : NULL; - (*info)->revision = revision; + *(cb->info) = svn_commit_info_dup (commit_info, cb->pool); return SVN_NO_ERROR; } Index: subversion/libsvn_client/add.c =================================================================== --- subversion/libsvn_client/add.c (revision 16627) +++ subversion/libsvn_client/add.c (working copy) @@ -589,11 +589,11 @@ /* Fetch RA commit editor */ SVN_ERR (svn_client__commit_get_baton (&commit_baton, commit_info_p, pool)); - SVN_ERR (svn_ra_get_commit_editor (ra_session, &editor, &edit_baton, - log_msg, svn_client__commit_callback, - commit_baton, - NULL, TRUE, /* No lock tokens */ - pool)); + SVN_ERR (svn_ra_get_commit_editor2 (ra_session, &editor, &edit_baton, + log_msg, svn_client__commit_callback, + commit_baton, + NULL, TRUE, /* No lock tokens */ + pool)); /* Call the path-based editor driver. */ err = svn_delta_path_driver (editor, edit_baton, SVN_INVALID_REVNUM, Index: subversion/libsvn_client/commit.c =================================================================== --- subversion/libsvn_client/commit.c (revision 16627) +++ subversion/libsvn_client/commit.c (working copy) @@ -623,10 +623,10 @@ /* Fetch RA commit editor. */ SVN_ERR (svn_client__commit_get_baton (&commit_baton, commit_info_p, pool)); - return svn_ra_get_commit_editor (*ra_session, editor, edit_baton, log_msg, - svn_client__commit_callback, - commit_baton, lock_tokens, keep_locks, - pool); + return svn_ra_get_commit_editor2 (*ra_session, editor, edit_baton, log_msg, + svn_client__commit_callback, + commit_baton, lock_tokens, keep_locks, + pool); } Index: subversion/tests/libsvn_repos/repos-test.c =================================================================== --- subversion/tests/libsvn_repos/repos-test.c (revision 16627) +++ subversion/tests/libsvn_repos/repos-test.c (working copy) @@ -1415,7 +1415,7 @@ /* Create a new commit editor in which we're going to play with authz */ - SVN_ERR (svn_repos_get_commit_editor3 (&editor, &edit_baton, repos, + SVN_ERR (svn_repos_get_commit_editor4 (&editor, &edit_baton, repos, NULL, "file://test", "/", "plato", "test commit", NULL, NULL, commit_authz_cb, authz_file, Index: subversion/libsvn_repos/commit.c =================================================================== --- subversion/libsvn_repos/commit.c (revision 16627) +++ subversion/libsvn_repos/commit.c (working copy) @@ -50,7 +50,7 @@ const char *log_msg; /* Callback to run when the commit is done. */ - svn_commit_callback_t commit_callback; + svn_commit_callback2_t commit_callback; void *commit_callback_baton; /* Callback to check authorizations on paths. */ @@ -716,6 +716,7 @@ { svn_string_t *date, *author; svn_error_t *err2; + svn_commit_info_t *commit_info = NULL; /* Even if there was a post-commit hook failure, it's more serious if one of the calls here fails, so we explicitly check for errors @@ -730,16 +731,21 @@ eb->pool); if (! err2) - err2 = (*eb->commit_callback) (new_revision, - date ? date->data : NULL, - author ? author->data : NULL, - eb->commit_callback_baton); - if (err2) { - svn_error_clear (err); - return err2; + commit_info = svn_create_commit_info (eb->pool); + + /* fill up the svn_commit_info structure */ + commit_info->revision = new_revision; + commit_info->date = date ? date->data : NULL; + commit_info->author = author ? author->data : NULL; + err2 = (*eb->commit_callback) (commit_info, + eb->commit_callback_baton); + if (err2) + { + svn_error_clear (err); + return err2; + } } - } return err; @@ -757,12 +763,11 @@ } - /*** Public interfaces. ***/ svn_error_t * -svn_repos_get_commit_editor3 (const svn_delta_editor_t **editor, +svn_repos_get_commit_editor4 (const svn_delta_editor_t **editor, void **edit_baton, svn_repos_t *repos, svn_fs_txn_t *txn, @@ -770,7 +775,7 @@ const char *base_path, const char *user, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, svn_repos_authz_callback_t authz_callback, void *authz_baton, @@ -834,7 +839,36 @@ return SVN_NO_ERROR; } +svn_error_t * +svn_repos_get_commit_editor3 (const svn_delta_editor_t **editor, + void **edit_baton, + svn_repos_t *repos, + svn_fs_txn_t *txn, + const char *repos_url, + const char *base_path, + const char *user, + const char *log_msg, + svn_commit_callback_t callback, + void *callback_baton, + svn_repos_authz_callback_t authz_callback, + void *authz_baton, + apr_pool_t *pool) +{ + svn_commit_callback2_t callback2 = NULL; + void *callback2_baton = NULL; + svn_compat_wrap_commit_callback (callback, callback_baton, + &callback2, &callback2_baton, + pool); + + return svn_repos_get_commit_editor4 (editor, edit_baton, repos, txn, + repos_url, base_path, user, + log_msg, callback2, + callback2_baton, authz_callback, + authz_baton, pool); +} + + svn_error_t * svn_repos_get_commit_editor2 (const svn_delta_editor_t **editor, void **edit_baton, @@ -850,8 +884,8 @@ { return svn_repos_get_commit_editor3 (editor, edit_baton, repos, txn, repos_url, base_path, user, - log_msg, callback, callback_baton, - NULL, NULL, pool); + log_msg, callback, + callback_baton, NULL, NULL, pool); } @@ -867,8 +901,8 @@ void *callback_baton, apr_pool_t *pool) { - return svn_repos_get_commit_editor3 (editor, edit_baton, repos, NULL, + return svn_repos_get_commit_editor2 (editor, edit_baton, repos, NULL, repos_url, base_path, user, - log_msg, callback, callback_baton, - NULL, NULL, pool); + log_msg, callback, + callback_baton, pool); } Index: subversion/libsvn_ra_svn/client.c =================================================================== --- subversion/libsvn_ra_svn/client.c (revision 16627) +++ subversion/libsvn_ra_svn/client.c (working copy) @@ -56,7 +56,7 @@ ra_svn_session_baton_t *sess_baton; apr_pool_t *pool; svn_revnum_t *new_rev; - svn_commit_callback_t callback; + svn_commit_callback2_t callback; void *callback_baton; } ra_svn_commit_callback_baton_t; @@ -802,18 +802,15 @@ static svn_error_t *ra_svn_end_commit(void *baton) { ra_svn_commit_callback_baton_t *ccb = baton; - svn_revnum_t new_rev; - const char *committed_date; - const char *committed_author; + svn_commit_info_t *commit_info = svn_create_commit_info (ccb->pool); SVN_ERR(handle_auth_request(ccb->sess_baton, ccb->pool)); SVN_ERR(svn_ra_svn_read_tuple(ccb->sess_baton->conn, ccb->pool, "r(?c)(?c)", - &new_rev, - &committed_date, - &committed_author)); + &(commit_info->revision), + &(commit_info->date), + &(commit_info->author))); - return ccb->callback(new_rev, committed_date, committed_author, - ccb->callback_baton); + return ccb->callback(commit_info, ccb->callback_baton); } @@ -821,7 +818,7 @@ const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, Index: subversion/libsvn_ra_dav/ra_dav.h =================================================================== --- subversion/libsvn_ra_dav/ra_dav.h (revision 16627) +++ subversion/libsvn_ra_dav/ra_dav.h (working copy) @@ -221,7 +221,7 @@ const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, Index: subversion/libsvn_ra_dav/commit.c =================================================================== --- subversion/libsvn_ra_dav/commit.c (revision 16627) +++ subversion/libsvn_ra_dav/commit.c (working copy) @@ -114,7 +114,7 @@ const char *log_msg; /* The commit callback and baton */ - svn_commit_callback_t callback; + svn_commit_callback2_t callback; void *callback_baton; /* The hash of lock-tokens owned by the working copy. */ @@ -1460,13 +1460,14 @@ apr_pool_t *pool) { commit_ctx_t *cc = edit_baton; - svn_revnum_t new_rev; - const char *committed_date; - const char *committed_author; + svn_revnum_t new_rev; + svn_commit_info_t *commit_info = NULL; - SVN_ERR( svn_ra_dav__merge_activity(&new_rev, - &committed_date, - &committed_author, + commit_info = svn_create_commit_info (pool); + + SVN_ERR( svn_ra_dav__merge_activity(&(commit_info->revision), + &(commit_info->date), + &(commit_info->author), cc->ras, cc->ras->root.path, cc->activity_url, @@ -1479,8 +1480,7 @@ SVN_ERR( svn_ra_dav__maybe_store_auth_info(cc->ras) ); if (new_rev != SVN_INVALID_REVNUM) - SVN_ERR( cc->callback (new_rev, committed_date, committed_author, - cc->callback_baton)); + SVN_ERR( cc->callback (commit_info, cc->callback_baton)); return SVN_NO_ERROR; } @@ -1573,7 +1573,7 @@ const svn_delta_editor_t **editor, void **edit_baton, const char *log_msg, - svn_commit_callback_t callback, + svn_commit_callback2_t callback, void *callback_baton, apr_hash_t *lock_tokens, svn_boolean_t keep_locks, Index: subversion/svnserve/serve.c =================================================================== --- subversion/svnserve/serve.c (revision 16627) +++ subversion/svnserve/serve.c (working copy) @@ -765,14 +765,14 @@ return SVN_NO_ERROR; } -static svn_error_t *commit_done(svn_revnum_t new_rev, const char *date, - const char *author, void *baton) +static svn_error_t *commit_done(const svn_commit_info_t *commit_info, + void *baton) { commit_callback_baton_t *ccb = baton; - *ccb->new_rev = new_rev; - *ccb->date = date; - *ccb->author = author; + *ccb->new_rev = commit_info->revision; + *ccb->date = commit_info->date; + *ccb->author = commit_info->author; return SVN_NO_ERROR; } @@ -913,7 +913,7 @@ ccb.date = &date; ccb.author = &author; /* ### Note that svn_repos_get_commit_editor actually wants a decoded URL. */ - SVN_CMD_ERR(svn_repos_get_commit_editor3 + SVN_CMD_ERR(svn_repos_get_commit_editor4 (&editor, &edit_baton, b->repos, NULL, svn_path_uri_decode(b->repos_url, pool), b->fs_path, b->user,