GIT: Have current commit hash and latest tag in file on commit

deployment, git, pre-commit

Solution

Alright, I think I got an ok-solution:

There is a git hook called post-commit and here is what I do:

- I put the file holding the tag/hash on .gitignore (to avoid unnecessary changes on the next commit)

- Let the post-commit hook update the version file.

Content of the hook file:

#!/bin/sh 
git describe --tags > version.txt 

Now I'm sure that file is up-to-date after each commit, so I'm all set as long as I do a commit before deploying.

Notes: Nasty beginner's caveat: make the hook file executable, git ignores the file without warning if it isn't.

All about git hooks: http://git-scm.com/book/en/Customizing-Git-Git-Hooks

All about .gitignore: http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files

Cheers,

Martin

Problem

that's more of a know-how questions probably: I'm versioning with git and send files for a PHP CMS to the test or production site using rsync. Now I'd like to keep track on what commit is currently deployed using a fool-proof and automated system, I was thinking about this: Set up a git hook to add/update a text file with the latest tag and commit hash. Then I can easily look up the commit. My problem is that at the time of pre-commit the script won't know the commit hash. Is there any straight-forward method to get that done (or another approach that comes to the same ends)? Thanks for your input in advance!

Original source