I (Julian Foad) wrote on 25 July 2012: > I can't see the session URL semantics documented where I'm looking for
> it (in svn_ra.h). Would the following doc string update for ra_open4() be an > improvement? Committed in r1367794. This doesn't touch on the authz implications which is the thing I most need to learn about, but just documents the basic existence of the session URL. - Julian > Index: subversion/include/svn_ra.h > =================================================================== > --- subversion/include/svn_ra.h (revision 1365585) > +++ subversion/include/svn_ra.h (working copy) > @@ -601,39 +601,52 @@ > /** > * Open a repository access session to the repository at @a repos_URL, > * or inform the caller regarding a correct URL by which to access > * that repository. > * > * If @a repos_URL can be used successfully to access the repository, > * set @a *session_p to an opaque object representing a repository > * session for the repository and (if @a corrected_url is non-NULL) > * set @a *corrected_url to NULL. If there's a better URL that the > * caller should try and @a corrected_url is non-NULL, set > * @a *session_p to NULL and @a *corrected_url to the corrected URL. If > * there's a better URL that the caller should try, and @a > * corrected_url is NULL, return an #SVN_ERR_RA_SESSION_URL_MISMATCH > * error. Allocate all returned items in @a pool. > * > + * The @a repos_URL need not point to the root of the repository: subject > + * to authorization, it may point to any path within the repository, even > + * a path at which no node exists in the repository. The session will > + * remember this URL as its "session URL" (also called "session > root URL"), > + * until changed by svn_ra_reparent(). Many RA functions take or return > + * paths that are relative to the session URL. > + * > + * If a @a corrected_url is returned, it will point to the same path > + * within the new repository root URL that @a repos_URL pointed to within > + * the old repository root URL. > + * > * Return @c SVN_ERR_RA_UUID_MISMATCH if @a uuid is non-NULL and not equal > * to the UUID of the repository at @c repos_URL. > * > * @a callbacks/@a callback_baton is a table of callbacks provided by the > * client; see @c svn_ra_callbacks2_t. > * > * @a config is a hash mapping <tt>const char *</tt> keys to > * @c svn_config_t * values. For example, the @c svn_config_t for the > * "~/.subversion/config" file is under the key "config". > * > * All RA requests require a session; they will continue to > * use @a pool for memory allocation. > * > * @see svn_client_open_ra_session(). > * > * @since New in 1.7. > */ > svn_error_t * > svn_ra_open4(svn_ra_session_t **session_p, > const char **corrected_url, > const char *repos_URL, > const char *uuid, > const svn_ra_callbacks2_t *callbacks, > void *callback_baton, >