From: Eric Sunshine Date: Mon, 09 Dec 2013 21:33:42 GMT Subject: Re: [PATCH v2 2/3] rev-parse: be more careful with munging arguments Message-ID: In-Reply-To: <20131206220751.GB25620@sigill.intra.peff.net> On Fri, Dec 6, 2013 at 5:07 PM, Jeff King wrote: > When rev-parse looks at whether an argument like "foo..bar" > or "foobar^@" is a difference or parent-shorthand, it > internally munges the arguments so that it can pass the > individual rev arguments to get_sha1. However, we do not > consistently un-munge the result. > > For cases where we do not match (e.g., "doesnotexist..HEAD"), > we wouuld then want to try to treat the argument as a s/wouuld/would/ > filename. try_difference gets this right, and always > unmunges in this case. However, try_parent_shorthand never > unmunges, leading to incorrect error messages, or even > incorrect results: > > $ git rev-parse foobar^@ > foobar > fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree. > Use '--' to separate paths from revisions, like this: > 'git [...] -- [...]' > > $ >foobar > $ git rev-parse foobar^@ > foobar > > For cases where we do match, neither function unmunges. This > does not currently matter, since we are done with the > argument. However, a future patch will do further > processing, and this prepares for it. In addition, it's > simply a confusing interface for some cases to modify the > const argument, and others not to. > > Signed-off-by: Jeff King