There is a problem with svn_ra_get_locations():
> * Set @a *locations to the locations (at the repository revisions
> * @a location_revisions) of the file identified by @a path in
> * @a peg_revision. @a path is relative to the URL to which
> * @a session was opened. @a location_revisions is an array of
> * @c svn_revnum_t's. @a *locations will be a mapping from the revisions to
> * their appropriate absolute paths. If the file doesn't exist in a
> * location_revision, that revision will be ignored.
> * Use @a pool for all allocations.
> * @since New in 1.2.
> svn_error_t *
> svn_ra_get_locations(svn_ra_session_t *session,
> apr_hash_t **locations,
> const char *path,
> svn_revnum_t peg_revision,
> apr_array_header_t *location_revisions,
> apr_pool_t *pool);
If PATH doesn't exist at PEG_REVISION:
RA_LOCAL/RA_SVN: Returns SVN_ERR_FS_NOT_FOUND
RA_NEON: Returns two SVN_ERR_RA_DAV_PATH_NOT_FOUND errors
RA_SERF: Returns SVN_NO_ERROR, sets *LOCATIONS to an empty hash.
Dave Glasser says, "That seems like a blatant serf bug to me".
There is also the problem that the doc-string doesn't specify what the behaviour
should be in this case. It should be specified that it shall return an error,
and it should specify which one (or ones, until issue #3137 is fixed).
(The issue of inconsistent error messages reporting this condition in the other
RA layers is tracked by issue #3137.)
Email message: <http://svn.haxx.se/dev/archive-2008-03/0144.shtml>.