Re: [RFC/largely untested/PATCH] sha1_name: interpret ~n as HEAD~n
- From
Jeff King <peff@peff.net>
- Date
- Apr 29, 2011, 22:34 UTC
- Message-ID
- <20110429223433.GA3434@sigill.intra.peff.net>
- In-Reply-To
- <6c53916752bf79178113157291fd675ead0804c9.1304092338.git.git@drmicha.warpmail.net>
On Fri, Apr 29, 2011 at 05:53:15PM +0200, Michael J Gruber wrote:
> HEAD~n is often used for rebase invocations etc. Make it use the same > default we use in other places, i.e. ~n == HEAD~n.
Hmm. It certainly makes sense in that we often default emptiness to HEAD, but I don't think we can extend this syntax to other things. For example, seeing ~n makes me think that ^n or ^{tree} would work. But of course "^" at the beginning of a ref means something completely different. So it's not completely consistent.
Consistency-wise, I'm not sure if it makes things better or worse. Obviously we have "foo.." with an implicit HEAD. You could argue that ".." is a different operator altogether, and that any operator that is a "ref modifier" like "~" or "^" needs to have a non-implicit ref. But that gets muddier with "@{4.hours.ago}", which also takes an implicit value, except that it isn't exactly HEAD. It's the branch pointed to by HEAD.
So there really isn't a lot of consistency, I guess. It also conflicts a little with the shell's "~user" syntax, though presumably you don't have users named "1" and "2".
-Peff