On Thu, Sep 03, 2015 at 08:53:16PM -0600, Jesse Hopkins wrote:
> Looking for suggestions on how to determine the tag that was used to
> checkout a git repo to its associated commit, particularly in the case
> where multiple tags might point to the same commit.
>
> I've had a look at git-name-rev and git-describe, and both seem useful so
> long as there's only one tag pointing to the commit of interest. However,
> I'm still coming up to speed on their behavior in the multiple tag case
> (mainly by experimentation).
>
> It seems to me that when checking out to a tag, Git does not record the
> *name* of the tag anywhere, but rather sets HEAD to the de-referenced
> commit SHA-1. As far as I can tell, it is not possible to recover the
> original name of the tag in the case of multiple tags on the same commit.
> Is my conclusion correct?
>
> The reason I ask is that we have a build environment where it is likely
> that multiple tags will get set by various groups in our main 'truth' Git
> repo. We are using some scripting that would like to know the *name* of
> the tag used for checkout (this has been working well for us so far as long
> as we checkout against branches).
>
> Is there perhaps some other means of doing a checkout to tag that DOES
> record the name of the tag? If not, I imagine we might need some external
> means to record the checked out tag, which is not out of the question.
Have you considered looking in the reflog?
When I checkout a tag, "git reflog -1" gives something like:
989d251 HEAD@{0}: checkout: moving from master to v0.9.2
Since whitespace isn't permitted in tag names you can do something like:
tag=$(git reflog -1)
tag=${tag##* }
git cat-file tag "$tag" >/dev/null 2>&1 || echo "not a tag!"
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html