Hi all,
I just came across
struct root_vtable_t
in
subversion/libsvn_fs/fs-loader.h
and found it totally underdocumented. AFAICT, that's a pretty central
internal API, but reading it leaves many questions. An extract:
libsvn_fs/fs-loader.h
[[[
/* Some of these operations accept multiple root arguments. Since the
roots may not all have the same vtable, we need a rule to determine
which root's vtable is used. The rule is: if one of the roots is
named "target", we use that root's vtable; otherwise, we use the
first root argument's vtable. */
typedef struct root_vtable_t
{
[...]
/* Files */
svn_error_t *(*file_length)(svn_filesize_t *length_p, svn_fs_root_t *root,
const char *path, apr_pool_t *pool);
svn_error_t *(*file_checksum)(svn_checksum_t **checksum,
svn_checksum_kind_t kind, svn_fs_root_t *root,
const char *path, apr_pool_t *pool);
svn_error_t *(*file_contents)(svn_stream_t **contents,
svn_fs_root_t *root, const char *path,
apr_pool_t *pool);
svn_error_t *(*make_file)(svn_fs_root_t *root, const char *path,
apr_pool_t *pool);
svn_error_t *(*apply_textdelta)(svn_txdelta_window_handler_t *contents_p,
void **contents_baton_p,
svn_fs_root_t *root, const char *path,
svn_checksum_t *base_checksum,
svn_checksum_t *result_checksum,
apr_pool_t *pool);
[...]
]]]
It just says "Files", but I want to know what happens when I call, say,
apply_textdelta(), in detail. Where does the new data go? Is a new revision
tree node created? What Where How?
I need to start looking up implementations (pretty cumbersome for a vtable)
to find out what is going on.
Would someone in the know like to document these callbacks, or am I looking
in the wrong place or something?
Thanks
~Neels
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2358952
Received on 2009-06-03 03:46:15 CEST