On Monday, February 04, 2013 10:17:29 PM Stefan Sperling wrote:
> On Mon, Feb 04, 2013 at 11:54:21AM -0800, Alexey Neyman wrote:
> > On Thursday, January 31, 2013 09:08:20 am Stefan Sperling wrote:
> > > BTW, I went over one of FreeBSD's svn wiki pages a while back, and added
> > > answers to open questions on this page:
> > > https://wiki.freebsd.org/SubversionMissing
> > 
> > Speaking of which:
> > 
> > Is there a reason why it is necessary to use "the svn diff --old
> > ^/somebranch --new ." instead of the intuitive "svn ^/somebranch ."?
> 
> Would "svn diff ^/somebranch ." be synopsis 1?
> 
>   svn diff -rN:M ^/somebranch@HEAD .@HEAD

It cannot be "synopsis 1", as its description states that "TARGETs may be all 
working copy paths or all URLs". In this case, we have one of each. Moreover, 
synopsis 1 says that for URLs, -r or -c must be present - and my example has 
no -r/-c option.

So, the only possible use of this syntax would be synopsis 2:

>  svn diff --old ^/somebranch@HEAD --new .@HEAD
> (i.e. show the difference between the two (path, revision) pairs
> somebranch@HEAD and .@HEAD) ?
> 
> > It has bugged me for a while until I discovered this --old/--new trick.
> 
> I agree that --old --new syntax isn't intuitive at all.

What adds oil to the fire is that the error message, which claims that "Target 
lists to diff may not contain both working copy paths and URL". If instead it 
said that the supplied syntax is ambiguous and suggested to use --new/--old 
for disambiguation, this would have saved a lot of frustration and would 
eliminate the need of "svn compare" subcommand :)

For example:
svn: Ambiguous target list (contains both work copy paths and URLs). Use
--old/--new syntax to disambiguate.

Regards,
Alexey.

Reply via email to