Main Page | Modules | Data Structures | File List | Data Fields | Globals

svn_ra.h File Reference

structures related to repository access More...

#include <apr_pools.h>
#include <apr_tables.h>
#include "svn_error.h"
#include "svn_delta.h"
#include "svn_auth.h"

Go to the source code of this file.

Data Structures

struct  svn_ra_callbacks_t
 A collection of callbacks implemented by libsvn_client which allows an RA layer to "pull" information from the client application, or possibly store information. More...

struct  svn_ra_plugin_t
 The RA Library. More...

struct  svn_ra_reporter_t
 The update Reporter. More...


Defines

#define SVN_RA_ABI_VERSION   1
 The current ABI (Application Binary Interface) version for the RA plugin model.


Typedefs

typedef svn_error_t *(* svn_ra_get_wc_prop_func_t )(void *baton, const char *relpath, const char *name, const svn_string_t **value, apr_pool_t *pool)
 This is a function type which allows the RA layer to fetch working copy (WC) properties.

typedef svn_error_t *(* svn_ra_set_wc_prop_func_t )(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool)
 This is a function type which allows the RA layer to store new working copy properties during update-like operations.

typedef svn_error_t *(* svn_ra_push_wc_prop_func_t )(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool)
 This is a function type which allows the RA layer to store new working copy properties as part of a commit.

typedef svn_error_t *(* svn_ra_invalidate_wc_props_func_t )(void *baton, const char *path, const char *name, apr_pool_t *pool)
 This is a function type which allows the RA layer to invalidate (i.e., remove) wcprops.

typedef svn_error_t *(* svn_ra_get_latest_revnum_func_t )(void *session_baton, svn_revnum_t *latest_revnum)
 A function type for retrieving the youngest revision from a repos.

typedef svn_ra_reporter_t svn_ra_reporter_t
 The update Reporter.

typedef svn_ra_callbacks_t svn_ra_callbacks_t
 A collection of callbacks implemented by libsvn_client which allows an RA layer to "pull" information from the client application, or possibly store information.

typedef svn_ra_plugin_t svn_ra_plugin_t
 The RA Library.

typedef svn_error_t *(* svn_ra_init_func_t )(int abi_version, apr_pool_t *pool, apr_hash_t *hash)
 libsvn_client will be responsible for loading each RA DSO it needs.


Functions

svn_error_tsvn_ra_dav_init (int abi_version, apr_pool_t *pool, apr_hash_t *hash)
 initialize libsvn_ra_dav.

svn_error_tsvn_ra_local_init (int abi_version, apr_pool_t *pool, apr_hash_t *hash)
 initialize libsvn_ra_local.

svn_error_tsvn_ra_svn_init (int abi_version, apr_pool_t *pool, apr_hash_t *hash)
 initialize libsvn_ra_svn.

svn_error_tsvn_ra_init_ra_libs (void **ra_baton, apr_pool_t *pool)
 Initialize the RA libraries.

svn_error_tsvn_ra_get_ra_library (svn_ra_plugin_t **library, void *ra_baton, const char *url, apr_pool_t *pool)
 Return an RA vtable-library (already within ra_baton) which can handle URL.

svn_error_tsvn_ra_print_ra_libraries (svn_stringbuf_t **descriptions, void *ra_baton, apr_pool_t *pool)
 Return a *descriptions string (allocated in pool) that is a textual list of all available RA libraries.


Detailed Description

structures related to repository access

Definition in file svn_ra.h.


Define Documentation

#define SVN_RA_ABI_VERSION   1
 

The current ABI (Application Binary Interface) version for the RA plugin model.

This version number will change when the ABI between the SVN core (e.g. libsvn_client) and the RA plugin changes.

An RA plugin should verify that the passed version number is acceptable before accessing the rest of the parameters, and before returning any information.

It is entirely acceptable for an RA plugin to accept multiple ABI versions. It can simply interpret the parameters based on the version, and it can return different plugin structures.

VSN DATE REASON FOR CHANGE --- ---------- ------------------------------------------------ 1 2001-02-17 Initial revision.

Definition at line 762 of file svn_ra.h.


Typedef Documentation

typedef struct svn_ra_callbacks_t svn_ra_callbacks_t
 

A collection of callbacks implemented by libsvn_client which allows an RA layer to "pull" information from the client application, or possibly store information.

A collection of callbacks implemented by libsvn_client which allows an RA layer to "pull" information from the client application, or possibly store information. libsvn_client passes this vtable to RA->open().

Each routine takes a callback_baton originally provided with the vtable.

typedef svn_error_t*(* svn_ra_get_wc_prop_func_t)(void *baton, const char *relpath, const char *name, const svn_string_t **value, apr_pool_t *pool)
 

This is a function type which allows the RA layer to fetch working copy (WC) properties.

The baton is provided along with the function pointer and should be passed back in. This will be the callback_baton or the close_baton as appropriate.

path is relative to the "root" of the session, defined by the repos_url passed to the RA->open() vtable call.

name is the name of the property to fetch. If the property is present, then it is returned in value. Otherwise, *value is set to NULL.

Definition at line 56 of file svn_ra.h.

typedef svn_error_t*(* svn_ra_init_func_t)(int abi_version, apr_pool_t *pool, apr_hash_t *hash)
 

libsvn_client will be responsible for loading each RA DSO it needs.

However, all "ra_FOO" implementations *must* export a function named svn_ra_FOO_init() of type svn_ra_init_func_t.

When called by libsvn_client, this routine adds an entry (or entries) to the hash table for any URL schemes it handles. The hash value must be of type (svn_ra_plugin_t *). pool is a pool for allocating configuration / one-time data.

This type is defined to use the "C Calling Conventions" to ensure that abi_version is the first parameter. The RA plugin must check that value before accessing the other parameters.

### need to force this to be __cdecl on Windows... how??

Definition at line 739 of file svn_ra.h.

typedef svn_error_t*(* svn_ra_invalidate_wc_props_func_t)(void *baton, const char *path, const char *name, apr_pool_t *pool)
 

This is a function type which allows the RA layer to invalidate (i.e., remove) wcprops.

See the documentation for svn_ra_get_wc_prop_func_t for baton, path, and name.

Unlike svn_ra_push_wc_prop_func_t, this has immediate effect. If it returns success, the wcprops have been removed.

Definition at line 101 of file svn_ra.h.

typedef struct svn_ra_plugin_t svn_ra_plugin_t
 

The RA Library.

A vtable structure which encapsulates all the functionality of a particular repository-access implementation.

Note: libsvn_client will keep an array of these objects, representing all RA libraries that it has simultaneously loaded into memory. Depending on the situation, the client can look through this array and find the appropriate implementation it needs.

typedef svn_error_t*(* svn_ra_push_wc_prop_func_t)(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool)
 

This is a function type which allows the RA layer to store new working copy properties as part of a commit.

See the comments for svn_ra_get_wc_prop_func_t for baton, path, and name. The value is the value that will be stored for the property; a NULL value means the property will be deleted.

Note that this might not actually store the new property before returning, but instead schedule it to be changed as part of post-commit processing (in which case a successful commit means the properties got written). Thus, during the commit, it is possible to invoke this function to set a new value for a wc prop, then read the wc prop back from the working copy and get the *old* value. Callers beware.

Definition at line 88 of file svn_ra.h.

typedef struct svn_ra_reporter_t svn_ra_reporter_t
 

The update Reporter.

A vtable structure which allows a working copy to describe a subset (or possibly all) of its working-copy to an RA layer, for the purposes of an update, switch, status, or diff operation.

Paths for report calls are relative to the target (not the anchor) of the operation. Report calls must be made in depth-first order: parents before children, all children of a parent before any siblings of the parent. The first report call must be a set_path with a path argument of "" and a valid revision. (If the target of the operation is locally deleted or missing, use the anchor's revision.) If the target of the operation is deleted or switched relative to the anchor, follow up the initial set_path call with a link_path or delete_path call with a path argument of "" to indicate that. In no other case may there be two report descriptions for the same path. If the target of the operation is a locally added file or directory (which previously did not exist), it may be reported as having revision 0 or as having the parent directory's revision.

typedef svn_error_t*(* svn_ra_set_wc_prop_func_t)(void *baton, const char *path, const char *name, const svn_string_t *value, apr_pool_t *pool)
 

This is a function type which allows the RA layer to store new working copy properties during update-like operations.

See the comments for svn_ra_get_wc_prop_func_t for baton, path, and name. The value is the value that will be stored for the property; a null value means the property will be deleted.

Definition at line 68 of file svn_ra.h.


Function Documentation

svn_error_t* svn_ra_get_ra_library svn_ra_plugin_t **  library,
void *  ra_baton,
const char *  url,
apr_pool_t *  pool
 

Return an RA vtable-library (already within ra_baton) which can handle URL.

A number of svn_client_* routines will call this internally, but client apps might use it too.

For reference, note that according to W3 RFC 1738, a valid URL is of the following form:

scheme://<user>:<password>@<host>:<port>/<url-path>

Common URLs are as follows:

http://subversion.tigris.org/index.html file:///home/joeuser/documents/resume.txt

Of interest is the file URL schema, which takes the form file://<host>/<path>, where <host> and <path> are optional. The `/' between <host> and <path> is NOT part of path, yet the RFC doesn't specify how <path> should be formatted. SVN will count on the portability layer to be able to handle the specific formatting of the <path> on a per-system basis.

svn_error_t* svn_ra_init_ra_libs void **  ra_baton,
apr_pool_t *  pool
 

Initialize the RA libraries.

Every user of the RA layer *must* call this routine and hold on to the ra_baton returned. This baton contains all known methods of accessing a repository, for use within most svn_client_* routines.


Generated on Wed Oct 13 23:55:35 2004 for Subversion by doxygen 1.3.4