On Wed, Jan 11, 2012 at 06:26:30PM -0800, Junio C Hamano wrote: > Carlos Martín Nieto <cmn@xxxxxxxx> writes: > > > I was trying to figure out why running > > > > git diff HEAD^:RelNotes RelNotes > > > > gives the expected output (on maint it tells me that the stable > > version changed from 1.7.8.3 to 1.7.8.4) but swapping the arguments > > doesn't. > > > > git diff RelNotes HEAD^:RelNotes > > > > doesn't show the opposite patch ... > > That comes from the general argument parsing rules of Git, namely, global > options (e.g. --paginate) first, then subcommand name, followed by dashed > options, revs and finally the paths. Once you give "RelNotes", which > cannot be a rev, you cannot give a rev. > > We _could_ special case the rule for "diff", but we simply didn't bother, > as the resulting code (and the implications of special casing) would be > too ugly to live to support such a corner case usage, especially when you > could always say "-R" to reverse the output. The rule "non-rev stops rev parsing" is fair enough. The error message is still very misleading, as it lies about RelNotes not being in HEAD^ and gives the impression that it was parsed as a rev (which I guess it was, but only to show the message). cmn
Attachment:
signature.asc
Description: Digital signature