GIT: tener hash de commit actual y la última label en el file en commit

eso es más de una pregunta de know-how, probablemente:

Estoy versionando con git y envío files para un PHP CMS al sitio de testing o producción usando rsync. Ahora me gustaría hacer un seguimiento de qué compromiso se implementa actualmente utilizando un sistema automatizado ya testing de tontos. Estaba pensando en esto:

Configure un gancho git para agregar / actualizar un file de text con la última label y confirmación de hash. Entonces puedo search fácilmente la confirmación.

Mi problema es que, en el momento de precompromiso, el script no conocerá el hash de confirmación. ¿Hay algún método sencillo para lograrlo (u otro enfoque que tenga los mismos fines)?

Gracias por su input de antemano!

Muy bien, creo que tengo una buena solución:

Hay un gancho de git llamado post-commit y esto es lo que hago:

  • Puse el file que contiene la label / hash en .gitignore (para evitar cambios innecesarios en la siguiente confirmación)
  • Deje que el gancho post-commit actualice el file de versión.

Contenido del file hook:

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

Ahora estoy seguro de que el file está actualizado después de cada confirmación, por lo que estoy listo siempre que realice una confirmación antes de la implementación.

Notas: Advertencia desagradable de principiante: haga que el file hook sea ejecutable, git ignora el file sin previo aviso si no lo está.

Todo sobre los ganchos de git: http://git-scm.com/book/es/Customizing-Git-Git-Hooks

Todo sobre .gitignore: http://git-scm.com/book/es/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files

Aclamaciones,

Martín

Como usa rsync para deploy su código, haga algo como esto:

 $ git describe --long > VERSION.txt 

Luego, incluya VERSION.txt en el package rsync.

La cadena de git describe se ve así:

 $ git describe --long r1.0-2-gca93d0a 

En lo de arriba:

  1. La última label es r1.0
  2. El 2 indica que estamos dos confirmaciones después de esa label
  3. El g significa 'git' (ok, eso es un poco raro, pero, bueno)
  4. El hash actual es ca93d0a

Esta es una pregunta frecuente

https://git.wiki.kernel.org/index.php/Git_FAQ#Does_Git_have_keyword_expansion.3F

Busque subst-export en gitattributes (5), necesita usar git-archive (1) para realizar la sustitución.

(% H te da el hash. Para get la label, necesitarías una secuencia de commands que llama a git-describe (1), no veo un formatting para eso)