svn_wc_add_repos_file4(..., copyfrom_url, ...) has a check that says,

  "If copyfrom_url isn't in the same repository as the WC target parent
dir, then SVN_ERR_UNSUPPORTED_FEATURE."

Semantically, yes, copying from another repos isn't yet supported.  But
the check for that should be at a higher and/or lower level.

The only reason it checks *at this level* is because it wants to know
the repos_root so it can calculate the repos_relpath which is required
for the DB.  And this is a cheap way of finding the repos root.

Proposal:

  * Change this API to take copyfrom_repos_root and
copyfrom_repos_relpath instead.

  * Remove this check and relpath calculation from its implementation.

  * Update the callers (two in libsvn_client, one in libsvn_wc).

  * For back-compat, move the check and _relpath calculation into
svn_wc_add_repos_file3().

That wouldn't change any behaviour right now, but would remove an
obstacle for later improvements.

I'm thinking this change fits into a generally desirable pattern of
moving towards keeping repos_root and repos_relpath separate.
Especially in the RA and repository side APIs, I assume, but makes sense
to do so in other parts of the libraries as well.

Any concerns?  If not I'll try to do it.

- Julian


Reply via email to