"Peter N. Lundblad" <email@example.com> writes:
> Using 1.2.x, something like
> svn switch htp https
> (in a repository checked out using an http URL)
> has the same problem. svn switch --relocate only rewrites an URL prefix if
> the FROM argument matches (r15015 adds the check that the FROM argument
> must not be longer than the repository root if that's known).
> The problem is that this check is made for each entry, and it has to be
> that way because there is no guarantee that a working consistent regarding
> repository root. (I was, for example, able to svn switch --relocate a
> file, and you could have relocated just a subdirectory of your WC). And
> you can also have a working copy where the root directory doesn't have a
> repository root in its entry, but some subset of the WC has.
> So, we can't check the FROM argument before starting to relocate (or we
> could, in a separate pass, maybe), and it is legitimate for just a subset
> of a WC to be relocated by a relocate command.
> So, even if this is not strictly a bug, I agree that it is a usability
> problem. Maybe the best thing is to just warn afterwards if no entries
> were relocated. Maybe r15015 should have failed immediately when the FROM
> argument is longer than the repository root. In retrospect, I can't
> imagine when it would be good to continue in that case. We might leave an
> inconsistent WC behind anyway in some corner cases.
My issue didn't make this clear, but there were really two problems here:
1) Why did the switch --relocate have no effect?
2) Why was it silent about that fact?
I decided to file an issue about (2) only, because I figured once
Subversion is correctly reporting the reasons for the failure, we can
determine whether (1) was a bug or was expected behavior in this case.
Right now, I have no idea *why* the switch failed. (Perhaps it had
something to do with the fact that when I checked out a working copy
from the NEW repository, I was prompted for auth creds?)
So yes, I think it is appropriate to at least warn if the relocate has
no effect; it may even be appropriate to error, but we should at least
warn. I guess if we do a warning, we can suppress it with -q, which
might be desirable for some uses. What do you think?
By the way, just now I tried a slightly different version of the
command, like so:
$ svn info | grep URL
$ svn switch --relocate http://svn.collab.net/repos \
$ svn info | grep URL
So, this time it worked! Notice that this time I left the
"cvs2svn/trunk" off the end of the URLs. But there's another variable
too: this time I already had auth creds, and I don't know if that made
a difference. (I guess I should have saved the working copy, so I
could retry after clearing my stored auth creds, but I didn't think of
that in time, and it would be difficult to reconstruct it, and I can't
switch back because the OLD repository doesn't respond anymore.)
I've attached this thread to the issue, by the way.
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Wed Aug 10 17:59:02 2005