On Wednesday, March 07, 2012 02:07:24 am Julian Foad wrote:
> Daniel Shahaf wrote:
> > Thanks for the patch Alexey.  Forwarding it to dev@.
> > 
> > Alexey Neyman wrote:
> >>  > > svn: Attempted to get textual contents of a *non*-file node
> >>  > > 
> >>  > > The issue, as pointed out by email thread [1], is that the
> >> > > 
> >> > > directory being merged contains a file with the same name as
> >> > > 
> >>  > > the directory. I.e., there is /trunk/foo directory containing
> >>  > > 
> >>  > >  /trunk/foo/foo file.
> >>  
> >>  I confirm it works when dir and file do not have the same name.
> >>  
> >>  $ svn merge -c 4 ^/trunk/foo .
> >>  
> >>  fails, the following
> >>  
> >>  $ svn merge -c 4 ^/trunk/foo $wc
> >>  
> >>  works. I guess, it's sort of a workaround.
> 
> This all happens because of a special case that was inserted long ago.
> 
> r845404: Resolve issue #785.
> ["add friendly enhancement to 'svn merge'",
> <http://subversion.tigris.org/issues/show_bug.cgi?id=785>]
> 
> * merge-cmd.c (svn_cl__merge): If no target path was specified, try to
>   infer it from the source path(s).
> [...]
> 
> The help text is now only present in the "4. This form is called a '2-URL
> merge'" section:
> 
>      "If TARGET_WCPATH is omitted, a default value of '.' is assumed.
>      However, in the special case where both sources refer to a file node
>      with the same basename and a similarly named file is also found within
>      '.', the differences will be applied to that local file."
> 
> ... but the code applies more widely, and also it doesn't check that the
> sources are files, only that the target is a file.
> 
> Seems we need to make the code more stringent (check sources are files) and
> fix the help text.  Then the special-case code would only kick in when it
> makes sense: when the sources are files and the target is a WC directory
> containing a file of that name.

I would just point out that this special cased kicks in even if the 3rd 
argument to merge is specified explicitly. One of the commands I tried 
originally (and which failed, too, with the same error) was:

svn co $repourl/branches/1.0/foo $wcpath
cd $wcpath
svn merge ^/trunk/foo@3 ^/trunk/foo@4 .

Regards,
Alexey.

> 
> - Julian
> 
> >>  Issue 4139 created. Attached is a patch that adds an XFail to the test
> >> 
> >> suite   for this issue.

Reply via email to