On Wed, Feb 06, 2013 at 12:30:05AM +0100, Johan Corveleyn wrote: > Nah, it's fine, I think I'm starting to get convinced ;-). But it's > still a pity that there is no relief (at least I don't see any) for > confusion around the fact that 'svn diff WC-PATH1 WC-PATH2' doesn't > diff WC-PATH1 and WC-PATH2 against each other.
I agree very much that it is rather confusing that svn diff WC-PATH1 WC-PATH1 does something else than: svn diff --old WC-PATH1 --new WC-PATH2 However, I think that the current help text makes the difference clear, if only the user cares to read it. As long as the documentation is clear enough, such subtleties are fine with me. I mean that I'll probably be able to remember them and explain them to people -- which is what I'm supposed to be doing at $DAYJOB -- hence that's why I'm fine with it :) Joke aside, I'm not sure if there is a really good way to resolve these ambiguities. I don't really like that fact that we've got these --old and --new options in the first place. It seems like a crutch for a lack of a better syntax that can express all use cases equally well without being rather weird and uncommon. But since the syntax is present in releases we have to keep supporting it... > The shorthands with the unversioned paths are quite nice I think, but > there is an additional risk of confusion: 'svn diff UNVERSIONED-PATH1 > UNVERSIONED-PATH2' will mean something totally different than 'svn > diff WC-PATH1 WC-PATH2' (even though they could both refer to the same > local files, but the commands are separated by an invocation of 'svn > add'). Yeah, it is going to make things even more confusing, of course! But only for those who type the diff command and expect a different result than they're getting :) > > The error message is triggered by an invocation like: > > > > svn diff -c42 foo ^/trunk bar > > > > Which is clearly invalid usage according to 'svn help diff'. > > Yes, but in this case the user gives 3 targets, so he clearly couldn't > have meant one of the shorthand syntaxes, right? Only if the user did not understand the (somewhat obscure by nature) help text... The warning is really meant to get people who provide nonsense arguments to read 'svn help diff'.