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
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.
> 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,
Received on 2012-07-31 23:53:22 CEST