views:

1677

answers:

2

I'm currently busy migrating away from the versioncontrol part of Team Foundation Server to Git. (Why I'm migrating away is a different story ;^) However, I would like to retain (for now) the ability to link Git changesets to workitems stored in TFS.

I already wrote a tool (using a hook from Git) in which I can inject workitemidentifiers into the message of a Git changeset.

However, I would also like to store the identifier of the Git commit (the hash) into a custom TFS workitem field. This way I can examine a workitem in TFS and see what Git changesets are associated with the workitem.

How can I easily retrieve the hash from the current commit from Git?

+1  A: 

Use git rev-list --max-count=1 HEAD

Robert Munteanu
git-rev-list is about generating list of commit objects; it is git-rev-parse to translate object name (e.g. HEAD) into SHA-1
Jakub Narębski
+14  A: 

To turn arbitrary extended object reference into SHA-1, use simply git-rev-parse, for example

git rev-parse HEAD

or

git rev-parse --verify HEAD

Sidenote: If you want to turn references (branches and tags) into SHA-1, there is git-show-ref and git-for-each-ref.

Jakub Narębski