Versiones automáticas con Git en Visual C ++

Tengo un proyecto de C ++ en VS2013. En el pasado, en proyectos similares, utilicé SubWCRev con Subversion para generar numbers de versión automáticamente. Tenía un file de plantilla como este:

#define MAJOR_VERSION 2 #define MINOR_VERSION 2 #define MICRO_VERSION 0 #define BUILD_VERSION $WCMODS?$WCREV$+1:$WCREV$$ #define QUOTE_(x) #x #define QUOTE(x) QUOTE_(x) #define BUILD_VERSION_STRING QUOTE(MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION.BUILD_VERSION) 

Luego ejecuté SubWCRev como un paso previo a la compilation para generar el file de encabezado que incluí en el proyecto para definir los numbers de versión.

Ahora estoy usando Git y quiero hacer algo similar. Sé que Git no tiene un equivalente de número de revisión, pero HEAD SHA estaría bien.

No parece que haya una manera equivalente de hacer esto con Git y necesito hacer algunas secuencias de commands, que no es mi punto fuerte. ¿Podría un Git Guru señalarme en la dirección correcta para lograr esto?

Eventualmente encontré un file por lotes muy útil que realmente hace mucho más de lo que necesito:

https://github.com/Thell/git-vs-versioninfo-gen

Básicamente hace un trabajo muy similar a SubWCRev y genera un file de cabecera que puedo include en mi proyecto VS para configurar todas las cadenas de versión. Después de un poco de pirateo con el guión, tengo que hacer exactamente lo que quería.

También hay una versión C # aquí:

https://github.com/jasperboot/git-vs-versioninfo

Estoy usando la salida de git describe para la cadena de compilation. No uso windows

Este ejemplo funciona en Linux bien.

version.h

 #ifndef GIT_VERSION_H #define GIT_VERSION_H extern const char* git_version; #endif 

La versión.c es generada por awk

 git describe | awk 'BEGIN { print "#include \"version.h\"" } { print "const char* git_version = \"" $$0 "\";"} END {}' > version.c 

Puñal

Probablemente, en casos simples, la siguiente línea de command será suficiente:

 git rev-list HEAD --count 

– imprime el número de revisiones, como "123".