Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/include/private/svn_editor.h view on Meta::CPAN
* For example, an svn_editor_add_directory() call during an 'update'
* operation will create the directory itself, including its properties,
* and will complete any client notification for the directory itself.
* The immediate children of the added directory, given in @a children,
* will be recorded in the WC as 'incomplete' and will be completed in the
* course of the same operation sequence, when the corresponding callbacks
* for these items are invoked.
* \n\n
*
* <h3>Timing and State</h3>
* The calls made by the driver to alter the state in the receiver are
* based on the receiver's *current* state, which includes all prior changes
* made during the edit.
*
* Example: copy A to B; set-props on A; copy A to C. The props on C
* should reflect the updated properties of A.
*
* Example: mv A@N to B; mv C@M to A. The second move cannot be marked as
* a "replacing" move since it is not replacing A. The node at A was moved
* away. The second operation is simply moving C to the now-empty path
* known as A.
*
* <h3>Paths</h3>
* Each driver/receiver implementation of this editor interface must
* establish the expected root for all the paths sent and received via
* the callbacks' @a relpath arguments.
*
* For example, during an "update", the driver is the repository, as a
* whole. The receiver may have just a portion of that repository. Here,
* the receiver could tell the driver which repository URL the working
* copy refers to, and thus the driver could send @a relpath arguments
* that are relative to the receiver's working copy.
*
* @note Because the source of a copy may be located *anywhere* in the
* repository, editor drives should typically use the repository root
* as the negotiated root. This allows the @a src_relpath argument in
* svn_editor_copy() to specify any possible source.
* \n\n
*
* <h3>Pool Usage</h3>
* The @a result_pool passed to svn_editor_create() is used to allocate
* the #svn_editor_t instance, and thus it must not be cleared before the
* driver has finished driving the editor.
*
* The @a scratch_pool passed to each callback invocation is derived from
* the @a result_pool that was passed to svn_editor_create(). It is
* cleared directly after each single callback invocation.
* To allocate memory with a longer lifetime from within a callback
* function, you may use your own pool kept in the @a editor_baton.
*
* The @a scratch_pool passed to svn_editor_create() may be used to help
* during construction of the #svn_editor_t instance, but it is assumed to
* live only until svn_editor_create() returns.
* \n\n
*
* <h3>Cancellation</h3>
* To allow graceful interruption by external events (like a user abort),
* svn_editor_create() can be passed an #svn_cancel_func_t that is
* polled every time the driver invokes a callback, just before the
* actual editor callback implementation is invoked. If this function
* decides to return with an error, the driver will receive this error
* as if the callback function had returned it, i.e. as the result from
* calling any of the driving functions (e.g. svn_editor_add_directory()).
* As with any other error, the driver must then invoke svn_editor_abort()
* and abort the transformation sequence. See #svn_cancel_func_t.
*
* The @a cancel_baton argument to svn_editor_create() is passed
* unchanged to each poll of @a cancel_func.
*
* The cancellation function and baton are typically provided by the client
* context.
*
*
* @todo ### TODO anything missing?
*
* @since New in 1.8.
*/
typedef struct svn_editor_t svn_editor_t;
/** The kind of the checksum to be used throughout the #svn_editor_t APIs.
*
* @note ### This may change before Ev2 is official released, so just like
* everything else in this file, please don't rely upon it until then.
*/
#define SVN_EDITOR_CHECKSUM_KIND svn_checksum_sha1
/** These function types define the callback functions a tree delta consumer
* implements.
*
* Each of these "receiving" function types matches a "driving" function,
* which has the same arguments with these differences:
*
* - These "receiving" functions have a @a baton argument, which is the
* @a editor_baton originally passed to svn_editor_create(), as well as
* a @a scratch_pool argument.
*
* - The "driving" functions have an #svn_editor_t* argument, in order to
* call the implementations of the function types defined here that are
* registered with the given #svn_editor_t instance.
*
* Note that any remaining arguments for these function types are explained
* in the comment for the "driving" functions. Each function type links to
* its corresponding "driver".
*
* @see svn_editor_t, svn_editor_cb_many_t.
*
* @defgroup svn_editor_callbacks Editor callback definitions
* @{
*/
/** @see svn_editor_add_directory(), svn_editor_t.
* @since New in 1.8.
*/
typedef svn_error_t *(*svn_editor_cb_add_directory_t)(
void *baton,
const char *relpath,
const apr_array_header_t *children,
apr_hash_t *props,
svn_revnum_t replaces_rev,
apr_pool_t *scratch_pool);
( run in 0.739 second using v1.01-cache-2.11-cpan-d7f47b0818f )