Author: kotkov
Date: Thu Dec 1 10:15:09 2022
New Revision: 1905662
URL: http://svn.apache.org/viewvc?rev=1905662&view=rev
Log:
On the 'pristines-on-demand-on-mwf' branch: Expose the working copy text-base
sync function as a new public svn_wc API.
* subversion/include/private/svn_wc_private.h
(svn_wc__textbase_fetch_cb_t, svn_wc__textbase_sync): Promote these
private members …
* subversion/include/svn_wc.h
(svn_wc_textbase_fetch_cb_t, svn_wc_textbase_sync): …into these new APIs.
* subversion/libsvn_client/textbase.c
(): Adjust includes.
(textbase_fetch_cb, svn_client__textbase_sync): Use the new public API.
* subversion/libsvn_wc/textbase.c
(svn_wc__textbase_sync): Rename to …
(svn_wc_textbase_sync): …this. Adjust the type of `fetch_callback`.
(textbase_sync_baton_t): Adjust the type of `fetch_callback`.
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/include/private/svn_wc_private.h
subversion/branches/pristines-on-demand-on-mwf/subversion/include/svn_wc.h
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_client/textbase.c
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/include/private/svn_wc_private.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/include/private/svn_wc_private.h?rev=1905662&r1=1905661&r2=1905662&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/include/private/svn_wc_private.h
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/include/private/svn_wc_private.h
Thu Dec 1 10:15:09 2022
@@ -2321,33 +2321,6 @@ svn_wc__upgrade(svn_wc_context_t *wc_ctx
void *notify_baton,
apr_pool_t *scratch_pool);
-/* The callback invoked by svn_wc__textbase_sync() to fetch the text-base
- contents identified by REPOS_ROOT_URL, REPOS_RELPATH and REVISION. */
-typedef svn_error_t *(*svn_wc__textbase_fetch_cb_t)(
- void *baton,
- const char *repos_root_url,
- const char *repos_relpath,
- svn_revnum_t revision,
- svn_stream_t *contents,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *scratch_pool);
-
-/* Synchronize the state of the text-base contents for the LOCAL_ABSPATH tree.
- If ALLOW_HYDRATE is true, fetch the required but missing text-base contents
- using the provided FETCH_CALLBACK and FETCH_BATON. If ALLOW_DEHYDRATE
- is true, remove the on disk text-base contents that is not required. */
-svn_error_t *
-svn_wc__textbase_sync(svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- svn_boolean_t allow_hydrate,
- svn_boolean_t allow_dehydrate,
- svn_wc__textbase_fetch_cb_t fetch_callback,
- void *fetch_baton,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *scratch_pool);
-
/* Return the working copy settings *FORMAT_P and *STORE_PRISTINE_P for
LOCAL_ABSPATH in WC_CTX. */
svn_error_t *
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/include/svn_wc.h
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/include/svn_wc.h?rev=1905662&r1=1905661&r2=1905662&view=diff
==============================================================================
--- subversion/branches/pristines-on-demand-on-mwf/subversion/include/svn_wc.h
(original)
+++ subversion/branches/pristines-on-demand-on-mwf/subversion/include/svn_wc.h
Thu Dec 1 10:15:09 2022
@@ -7358,6 +7358,51 @@ svn_wc_get_pristine_copy_path(const char
apr_pool_t *pool);
+/** The callback invoked by svn_wc_textbase_sync() to provide the text-base
+ * contents identified by @a repos_root_url, @a repos_relpath and @a revision.
+ *
+ * The callback is expected to write the contents to @a contents and close
+ * the stream.
+ *
+ * @since New in 1.15.
+ */
+typedef svn_error_t *(*svn_wc_textbase_fetch_cb_t)(
+ void *baton,
+ const char *repos_root_url,
+ const char *repos_relpath,
+ svn_revnum_t revision,
+ svn_stream_t *contents,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *scratch_pool);
+
+ /** Synchronize the state of the text-base contents for the
+ * @a local_abspath tree.
+ *
+ * If @a allow_hydrate is true, fetch the required but missing text-base
+ * contents using the provided @a fetch_callback and @a fetch_baton.
+ * If @a allow_hydrate is false, @a fetch_callback will not be used and
+ * may be @c NULL.
+ *
+ * If @a allow_dehydrate is true, remove the on disk text-base contents
+ * that is not required.
+ *
+ * @see svn_wc_textbase_hydrate_cb_t
+ * @see svn_client__textbase_sync for usage/implementation example.
+ *
+ * @since New in 1.15.
+ */
+svn_error_t *
+svn_wc_textbase_sync(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ svn_boolean_t allow_hydrate,
+ svn_boolean_t allow_dehydrate,
+ svn_wc_textbase_fetch_cb_t fetch_callback,
+ void *fetch_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *scratch_pool);
+
/**
* Recurse from @a local_abspath, cleaning up unfinished tasks. Perform
* any temporary allocations in @a scratch_pool. If @a break_locks is TRUE
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_client/textbase.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_client/textbase.c?rev=1905662&r1=1905661&r2=1905662&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_client/textbase.c
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_client/textbase.c
Thu Dec 1 10:15:09 2022
@@ -22,8 +22,7 @@
*/
#include "svn_path.h"
-
-#include "private/svn_wc_private.h"
+#include "svn_wc.h"
#include "client.h"
@@ -36,7 +35,7 @@ typedef struct textbase_fetch_baton_t
svn_ra_session_t *ra_session;
} textbase_fetch_baton_t;
-/* Implements svn_wc__textbase_fetch_cb_t. */
+/* Implements svn_wc_textbase_fetch_cb_t. */
static svn_error_t *
textbase_fetch_cb(void *baton,
const char *repos_root_url,
@@ -121,11 +120,11 @@ svn_client__textbase_sync(svn_ra_session
if (ra_session)
SVN_ERR(svn_ra_get_session_url(ra_session, &old_session_url,
scratch_pool));
- SVN_ERR(svn_wc__textbase_sync(ctx->wc_ctx, local_abspath,
- allow_hydrate, allow_dehydrate,
- textbase_fetch_cb, &fetch_baton,
- ctx->cancel_func, ctx->cancel_baton,
- scratch_pool));
+ SVN_ERR(svn_wc_textbase_sync(ctx->wc_ctx, local_abspath,
+ allow_hydrate, allow_dehydrate,
+ textbase_fetch_cb, &fetch_baton,
+ ctx->cancel_func, ctx->cancel_baton,
+ scratch_pool));
if (ra_session)
SVN_ERR(svn_ra_reparent(ra_session, old_session_url, scratch_pool));
Modified:
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c
URL:
http://svn.apache.org/viewvc/subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c?rev=1905662&r1=1905661&r2=1905662&view=diff
==============================================================================
---
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c
(original)
+++
subversion/branches/pristines-on-demand-on-mwf/subversion/libsvn_wc/textbase.c
Thu Dec 1 10:15:09 2022
@@ -460,7 +460,7 @@ svn_wc__textbase_prepare_install(svn_str
typedef struct textbase_sync_baton_t
{
svn_wc__db_t *db;
- svn_wc__textbase_fetch_cb_t fetch_callback;
+ svn_wc_textbase_fetch_cb_t fetch_callback;
void *fetch_baton;
} textbase_sync_baton_t;
@@ -529,15 +529,15 @@ textbase_fetch_cb(void *baton,
}
svn_error_t *
-svn_wc__textbase_sync(svn_wc_context_t *wc_ctx,
- const char *local_abspath,
- svn_boolean_t allow_hydrate,
- svn_boolean_t allow_dehydrate,
- svn_wc__textbase_fetch_cb_t fetch_callback,
- void *fetch_baton,
- svn_cancel_func_t cancel_func,
- void *cancel_baton,
- apr_pool_t *scratch_pool)
+svn_wc_textbase_sync(svn_wc_context_t *wc_ctx,
+ const char *local_abspath,
+ svn_boolean_t allow_hydrate,
+ svn_boolean_t allow_dehydrate,
+ svn_wc_textbase_fetch_cb_t fetch_callback,
+ void *fetch_baton,
+ svn_cancel_func_t cancel_func,
+ void *cancel_baton,
+ apr_pool_t *scratch_pool)
{
svn_boolean_t store_pristine;
textbase_sync_baton_t baton = {0};