You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2016/02/14 21:44:50 UTC
svn commit: r1730398 - /subversion/trunk/subversion/libsvn_repos/log.c
Author: stefan2
Date: Sun Feb 14 20:44:50 2016
New Revision: 1730398
URL: http://svn.apache.org/viewvc?rev=1730398&view=rev
Log:
Continue work on the svn_repos_get_logs4 to svn_repos_get_logs5 migration:
Add a per-changed-path callback.
At the moment, it is entirely redundant and does not use the final data
types, yet.
* subversion/libsvn_repos/log.c
(svn_repos__path_change_receiver_t): Declare the new callback type.
(log_callbacks_t): Add elements for the new callback.
(detect_changed): Invoke the new callback.
(svn_repos__get_logs5): Add new callback to signature and pass it along.
(log4_path_change_receiver): Dummy implementation of the new callback.
(svn_repos_get_logs4): Update caller.
Modified:
subversion/trunk/subversion/libsvn_repos/log.c
Modified: subversion/trunk/subversion/libsvn_repos/log.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/log.c?rev=1730398&r1=1730397&r2=1730398&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_repos/log.c (original)
+++ subversion/trunk/subversion/libsvn_repos/log.c Sun Feb 14 20:44:50 2016
@@ -46,10 +46,18 @@
#include "private/svn_string_private.h"
+/* To become public API. */
+typedef svn_error_t *(*svn_repos__path_change_receiver_t)(
+ void *baton,
+ svn_log_changed_path2_t *change,
+ apr_pool_t *scratch_pool);
+
/* This is a mere convenience struct such that we don't need to pass that
many parameters around individually. */
typedef struct log_callbacks_t
{
+ svn_repos__path_change_receiver_t path_change_receiver;
+ void *path_change_receiver_baton;
svn_log_entry_receiver_t revision_receiver;
void *revision_receiver_baton;
svn_repos_authz_func_t authz_read_func;
@@ -365,6 +373,11 @@ detect_changed(svn_repos_revision_access
}
apr_hash_set(*changed, path, path_len, item);
+
+ if (callbacks->path_change_receiver)
+ SVN_ERR(callbacks->path_change_receiver(item,
+ callbacks->path_change_receiver_baton,
+ iterpool));
}
svn_pool_destroy(iterpool);
@@ -2284,8 +2297,10 @@ svn_repos__get_logs5(svn_repos_t *repos,
const apr_array_header_t *revprops,
svn_repos_authz_func_t authz_read_func,
void *authz_read_baton,
- svn_log_entry_receiver_t receiver,
- void *receiver_baton,
+ svn_repos__path_change_receiver_t path_change_receiver,
+ void *path_change_receiver_baton,
+ svn_log_entry_receiver_t revision_receiver,
+ void *revision_receiver_baton,
apr_pool_t *scratch_pool)
{
svn_revnum_t head = SVN_INVALID_REVNUM;
@@ -2294,8 +2309,10 @@ svn_repos__get_logs5(svn_repos_t *repos,
svn_mergeinfo_t paths_history_mergeinfo = NULL;
log_callbacks_t callbacks;
- callbacks.revision_receiver = receiver;
- callbacks.revision_receiver_baton = receiver_baton;
+ callbacks.path_change_receiver = path_change_receiver;
+ callbacks.path_change_receiver_baton = path_change_receiver_baton;
+ callbacks.revision_receiver = revision_receiver;
+ callbacks.revision_receiver_baton = revision_receiver_baton;
callbacks.authz_read_func = authz_read_func;
callbacks.authz_read_baton = authz_read_baton;
@@ -2433,6 +2450,14 @@ svn_repos__get_logs5(svn_repos_t *repos,
revprops, descending_order, &callbacks, scratch_pool);
}
+static svn_error_t *
+log4_path_change_receiver(void *baton,
+ svn_log_changed_path2_t *change,
+ apr_pool_t *scratch_pool)
+{
+ return SVN_NO_ERROR;
+}
+
svn_error_t *
svn_repos_get_logs4(svn_repos_t *repos,
const apr_array_header_t *paths,
@@ -2455,6 +2480,7 @@ svn_repos_get_logs4(svn_repos_t *repos,
include_merged_revisions,
revprops,
authz_read_func, authz_read_baton,
+ log4_path_change_receiver, NULL,
receiver, receiver_baton,
pool));