Me gustaría incrustar la revisión de Git (SHA1) en mis ejecutables en el momento de la compilación. Puedo hacerlo localmente así:
git log -1 --format="%h" >version
objcopy --input binary --output elf64-x86-64 version version.o
# link version.o into the executable
El problema es que estoy usando NetBeans (en Windows) para construir de forma remota (en Linux). Es un poco paradójico: el comando git parece necesitar ejecutarse en la máquina local (donde está la fuente), pero el comando objcopy debe ejecutarse en el servidor remoto (donde ocurre la compilación). Esto es un problema porque si bien NetBeans me permite editar el Makefile del proyecto para insertar un paso de compilación previa, no puedo averiguar cómo o dónde colocar el comando git para que se ejecute en la máquina local antes de los pasos de compilación remota.
Intenté hacer un proyecto NetBeans separado para ejecutar el comando git en localhost, pensando que luego haría que el proyecto “real” dependiera de eso, pero NetBeans no parece permitirme crear un proyecto que “no haga nada” ( es decir, no tiene archivos fuente y no produce una biblioteca ni un ejecutable; solo generaría el archivo de texto de la versión).
Estoy usando NetBeans 7.3 para C++ con la opción “Copia automática” para compilaciones remotas. Una posible solución podría ser usar el modo NFS/Samba con el repositorio de Git almacenado en el servidor, pero eso sería bastante problemático porque el proyecto tiene varios desarrolladores que usan la copia automática desde hace mucho tiempo. Por lo tanto, sería genial tener una solución para generar algunos archivos localmente en NetBeans antes de iniciar la compilación remota.