No comments on the general idea as I'm not sufficiently familiar with
the internals of the client library. That said, ...
Julian Foad wrote on Fri, Oct 07, 2011 at 14:56:42 +0100:
> This is a Request For Comments on the creation of an API for reading a
> tree of dirs and files from an arbitrary source via a common API.
>
Would it be a public API?
> /* V-table for #svn_client_tree_t.
> *
> * Paths are relpaths, relative to the tree root.
> * Revision numbers and repository ids are #SVN_INVALID_REVNUM and NULL
> * for an unversioned node (including a node that is a local add/copy/move
> * in a WC working tree).
> */
> typedef struct svn_client_tree__vtable_t
> {
> /* Fetch the node kind of the node at @a relpath.
> * (### and other metadata? revnum? props?)
> *
> * Set @a *kind to the node kind.
> */
> svn_error_t *(*get_kind)(svn_client_tree_t *tree,
> svn_node_kind_t *kind,
> const char *relpath,
> apr_pool_t *scratch_pool);
Return an svn_client_info2_t ?
>
> /* Fetch the contents and properties of the file at @a relpath.
> svn_error_t *(*get_file)(svn_client_tree_t *tree,
> svn_stream_t **stream,
> apr_hash_t **props,
> const char *relpath,
> apr_pool_t *result_pool,
> apr_pool_t *scratch_pool);
>
> /* Fetch the entries and properties of the directory at @a relpath.
> svn_error_t *(*get_dir)(svn_client_tree_t *tree,
> apr_hash_t **dirents,
> apr_hash_t **props,
> const char *relpath,
> apr_pool_t *result_pool,
> apr_pool_t *scratch_pool);
>
> /* Push a sub-tree into an editor, as a delta against an empty tree.
> * This is useful for efficiency when streaming a (sub-)tree from a
> * remote source. */
> svn_error_t *(*push_as_delta_edit)(svn_client_tree_t *tree,
> const char *relpath,
> svn_delta_editor_t *editor,
> void *edit_baton,
> apr_pool_t *result_pool,
> apr_pool_t *scratch_pool)
Add a "describe this tree" member? e.g., it could return the
PATH_OR_URL_at_PEG being described.
> } svn_client_tree__vtable_t;
Received on 2011-10-07 17:30:46 CEST