Re: don't accept bogus N in `HEAD~N'
From: Jim Meyering <hidden>
Date: 2016-06-15 22:42:27
Jakub Narebski [off-list ref] wrote:
Jim Meyering wrote:quoted
In a very shallow audit, I spotted code where overflow was not detected. But it's hardly critical. Currently, git-diff HEAD HEAD is equivalent to this git-diff HEAD HEAD~18446744073709551616 # aka 2^64 Exercising git-rev-parse directly, currently I get this: $ git-rev-parse --no-flags --sq HEAD~18446744073709551616 '639ca5497279607665847f2e3a11064441a8f2a6' It'd be better to produce a diagnostic and fail: $ ./git-rev-parse --no-flags --sq -- HEAD~18446744073709551616 /dev/null fatal: ambiguous argument 'HEAD~18446744073709551616': unknown revision or filenameWouldn't it remove ability to say "to the root commit"? One can do it now I guess exactly by specyfying overly large N. Although there should probably be some limit... or not.
Do people really use HEAD~<VERY_LARGE_INTEGER> to refer to the root? Any who do that will find it surprising that HEAD~18446744073709551616 is currently interpreted just like `HEAD~0'. And HEAD~18446744073709551617 just like HEAD~1, etc.