On Wed, Feb 06, 2013 at 07:21:04AM +0100, Branko Čibej wrote: > Given all the above, I think we should find a way to warn users -- with > a one-line note in the header of the diff output, for example? -- about > the cases where the two-parameter diff could be ambiguous (which, I > believe, is when both parametrs are WC paths or URLs); and further, when > any of the paths are unversioned.
We've always had the following 2-params cases (where no -r or -c options are present): diff WC-PATH WC-PATH -> show diff against BASE for each target diff URL1 URL2 -> show diff between URLs We've now added "URL WC-PATH" and "WC-PATH URL" cases to the mix, in response to a user who expected these to behave like "URL1 URL2", and was surprised to learn that they were erroring out instead: diff URL WC-PATH -> show diff between URL and WC-PATH diff WC-PATH URL -> show diff between WC-PATH and URL I think there is a case to be made for keeping these. Because the odd one out here is the "WC-PATH WC-PATH" case. As you stated this case had to be compatible to CVS. It has always behaved differently to the "URL1 URL2" case. So users have already been "confused" with 2-param diff behaviour depending on the target type. Hence I don't think adding the new cases makes things any worse. I still think it's a usability enhancement because the user gets a reasonable diff instead of an error. But I can see that adding unversioned paths to the mix would increase the likelihood of user confusion. That would open the door for 'svn diff PATH1 PATH2' to produce either a diff against BASE for each file if both files are versioned, or a diff between PATH1 and PATH2 if either or both of PATH1 are unversioned. That's asking for trouble...