Re: Bug in "git rev-parse --verify"
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Mar 28, 2013, 15:34 UTC
- Message-ID
- <515462FB.9040605@alum.mit.edu>
- In-Reply-To
- <CAPc5daUqzz=9TBmj2Q0MHqEc6gMHxXoGr9+JV3hq76zDKJAyCw@mail.gmail.com>
On 03/28/2013 02:48 PM, Junio C Hamano wrote:
> I think it has always been about "is this well formed and we can turn it > into a raw 20-byte object name?" and never about"does it exist?"
That's surprising. The man page says
--verify
The parameter given must be usable as a single, valid object name.
Otherwise barf and abort."Valid", to me, implies that the parameter should be the name of an actual object, and this also seems a more useful concept to me and more consistent with the command's behavior when passed other arguments.
Is there a simple way to verify an object name more strictly and convert it to an SHA1? I can only think of solutions that require two commands, like
git cat-file -e $ARG && git rev-parse --verify $ARG
I suppose in most contexts where one wants to know whether an object name is valid, one should also verify that the object has the type that you expect:
test X$(git cat-file -t $ARG) = Xcommit &&
git rev-parse --verify $ARGor (allowing tag dereferencing)
git cat-file -e $ARG^{commit} &&
git rev-parse --verify $ARG^{commit}Michael
-- Michael Haggerty mhagger@alum.mit.edu http://softwareswirl.blogspot.com/