subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Foad <julianf...@apache.org>
Subject Bugs in svn copy URL1 URL2 WC
Date Fri, 09 Nov 2018 16:22:10 GMT
Some bugs in "svn copy URL1 URL2 WC".
These examples are in a WC checked out from https://svn.apache.org/repos/asf/subversion/trunk

$ svn copy http://svn.apache.org/repos/asf/subversion/README https://svn.apache.org/repos/asf/subversion/site
notes/
svn: E170000: Illegal repository URL ''

The problem is in repos_to_wc_copy(): we calculate a 'top_src_url' as the longest common ancestor
of the source URLs. When they have no common ancestor (in this example, http: vs. https:),
this error results.

$ svn copy https://svn.apache.org/repos/asf/ https://svn.apache.org/repos/infra/ notes/
svn: E170013: Unable to connect to a repository at URL 'https://svn.apache.org/repos'
svn: E175003: The server at 'https://svn.apache.org/repos' does not support the HTTP/DAV protocol

A similar failure mode. In this example, the longest common ancestor is a valid URL but is
not a repository.

$ svn cp ^/apr/examples ^/subversion/README notes/
A    notes/examples/trunk
A    ...
svn: E170000: 'https://svn.apache.org/repos/asf/subversion/README' isn't a child of session
URL 'https://svn.apache.org/repos/asf/apr/examples'

This example fails after copying the first source, because repos_to_wc_copy_single() has re-parented
the session to point to the URL it used, and the caller didn't expect that.

PROPOSALS

For the first two cases, I propose that svn should require the copy sources are all in the
same repository, and error out if not. And document the requirement in the API docs and 'svn
help copy'.

For the third case, I propose we should fix the bug.

All these cases need tests.

-- 
- Julian

Mime
View raw message