threads / discuss / 27619

Is current HEAD pointing at a given revision ?

Subject: Is current HEAD pointing at a given revision ?

## tl;dr

5 messages between Jun 14, 2011 and Jun 14, 2011.

replies: 4people: 2as markdown or json

Francis Moreau· Jun 14, 2011, 06:59 UTC · lore
Hello,

I have a given revision (tag, sha1 ...) and I'd like to know if that revisions corresponds to what the current HEAD is pointing at.

Could anybody give me some advices for achieving this ?
Thanks
-- 
Francis
Jakub Narebski· Jun 14, 2011, 09:00 UTC · re: Francis Moreau · lore

Re: Is current HEAD pointing at a given revision ?

Francis Moreau <francis.moro@gmail.com> writes:
> I have a given revision (tag, sha1 ...) and I'd like to know if that
> revisions corresponds to what the current HEAD is pointing at.
> 
> Could anybody give me some advices for achieving this ?

If you want to know if given revision (or ref) points at the same thing as HEAD, you can use

  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]

or something like that. The '^{commit}' is here in case $ref points only indirectly to commit, via a tag object.

If you want to kow if current HEAD is tagged, you can use instead
  git describe --exact-match HEAD
-- 
Jakub Narebski
Poland
ShadeHawk on #git
Francis Moreau· Jun 14, 2011, 15:56 UTC · re: Jakub Narebski · lore

Re: Is current HEAD pointing at a given revision ?

On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
Show 15 quoted lines
> Francis Moreau <francis.moro@gmail.com> writes:
>
>> I have a given revision (tag, sha1 ...) and I'd like to know if that
>> revisions corresponds to what the current HEAD is pointing at.
>>
>> Could anybody give me some advices for achieving this ?
>
> If you want to know if given revision (or ref) points at the same
> thing as HEAD, you can use
>
>  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
>
> or something like that.  The '^{commit}' is here in case $ref points
> only indirectly to commit, via a tag object.
>
I see thanks.

I'm not sure what the ^{commit} is for because in the case of tag object, git-rev-parse seems to work fine without the suffix:

git rev-parse v2.6.39 8b0753a3df28c21b0570fa21362c5f1b3b4f59bf

This is in a kernel git repository
Thanks
-- 
Francis
Jakub Narebski· Jun 14, 2011, 16:17 UTC · re: Francis Moreau · lore

Re: Is current HEAD pointing at a given revision ?

Francis Moreau wrote:
Show 26 quoted lines
> On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> > Francis Moreau <francis.moro@gmail.com> writes:
> >
> > > I have a given revision (tag, sha1 ...) and I'd like to know if that
> > > revisions corresponds to what the current HEAD is pointing at.
> > >
> > > Could anybody give me some advices for achieving this ?
> >
> > If you want to know if given revision (or ref) points at the same
> > thing as HEAD, you can use
> >
> >  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
> >
> > or something like that.  The '^{commit}' is here in case $ref points
> > only indirectly to commit, via a tag object.
> >
> 
> I see thanks.
> 
> I'm not sure what the ^{commit} is for because in the case of tag
> object, git-rev-parse seems to work fine without the suffix:
> 
> git rev-parse v2.6.39
> 8b0753a3df28c21b0570fa21362c5f1b3b4f59bf
> 
> This is in a kernel git repository

But that is the SHA-1 id of a _tag object_, not of commit (revision) it points to. '^{}' means peel to not tag, '^{commit}' means peel to commit.

In git repository:
 $ git rev-parse v1.7.5
 4d2f8aeba22578022e2d2a56dac37fcdf78d82d4
 $ git rev-parse v1.7.5^{}
 ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 $ git rev-parse v1.7.5^{commit}
 ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 $ git cat-file -t 4d2f8aeba22578022e2d2a56dac37fcdf78d82d4
 tag
 $ git cat-file -t ec014eac0e9e6f30cbbca616090fa2ecf74797e7
 commit
 $ git cat-file -t HEAD
 commit
-- 
Jakub Narebski
Poland
Francis Moreau· Jun 14, 2011, 19:17 UTC · re: Jakub Narebski · lore

Re: Is current HEAD pointing at a given revision ?

On Tue, Jun 14, 2011 at 6:17 PM, Jakub Narebski <jnareb@gmail.com> wrote:
Show 32 quoted lines
> Francis Moreau wrote:
>> On Tue, Jun 14, 2011 at 11:00 AM, Jakub Narebski <jnareb@gmail.com> wrote:
>> > Francis Moreau <francis.moro@gmail.com> writes:
>> >
>> > > I have a given revision (tag, sha1 ...) and I'd like to know if that
>> > > revisions corresponds to what the current HEAD is pointing at.
>> > >
>> > > Could anybody give me some advices for achieving this ?
>> >
>> > If you want to know if given revision (or ref) points at the same
>> > thing as HEAD, you can use
>> >
>> >  [ "$(git rev-parse HEAD)" = "$(git rev-parse $ref^{commit})" ]
>> >
>> > or something like that.  The '^{commit}' is here in case $ref points
>> > only indirectly to commit, via a tag object.
>> >
>>
>> I see thanks.
>>
>> I'm not sure what the ^{commit} is for because in the case of tag
>> object, git-rev-parse seems to work fine without the suffix:
>>
>> git rev-parse v2.6.39
>> 8b0753a3df28c21b0570fa21362c5f1b3b4f59bf
>>
>> This is in a kernel git repository
>
> But that is the SHA-1 id of a _tag object_, not of commit (revision)
> it points to. '^{}' means peel to not tag, '^{commit}' means peel to
> commit.
>
Oh I see now, thanks a lot !
-- 
Francis

← back to recent threads