David Glasser wrote:
> On 5/9/07, Peter Lundblad <plundblad@google.com> wrote:
>> For svnserve, this adds three extra roundtrips just for the sanity check
>> (not saying it is the wrong tradeoof if there's no other way) and
>> reconnects twice if you're working against anolder server.
>> Is there a cheaper way to do it? Is it possible to check for a specific
>> error returned from the server?
>> (I don't have the sources handy ATM, so that might be a too easy question
>> to anser...)
>
> The error is generated in libsvn_repos/reporter.c(drive):
>
> /* If the anchor is the operand, the source and target must be dirs.
> Check this before opening the root to avoid modifying the wc. */
> else if (!*b->s_operand && (!s_entry || s_entry->kind != svn_node_dir
> || t_entry->kind != svn_node_dir))
> return svn_error_create(SVN_ERR_FS_PATH_SYNTAX, NULL,
> _("Cannot replace a directory from within"));
>
> The reporter code is invoked for much more than just switch, and this
> particular error covers more cases than just the issue at hand. I
> thought about making it return a more specific error based on exactly
> what s_entry->kind and t_entry->kind was, but I'm not incredibly
> familiar with the reporter code, and catching the invalid input as
> soon as it occurs seemed to be less invasive.
>
> (On the other hand, arguably this is never a useful error message. I
> haven't quite figured out all the cases that it can occur yet.)
>
> The reparents shouldn't be able to fail at least, right?
I would agree that this is never a useful error message. I think fixing
this message alone would go 80% of the way of solving the problem.
--
C. Michael Pilato <cmpilato@collab.net>
CollabNet <> www.collab.net <> Distributed Development On Demand
Received on Thu May 10 05:54:37 2007