yo estaba tratando de lograr algo similar a la OP; Quería incrustar Git commit-id en la cadena de versión de Postgres. El código en la configuración de Postgres.en, en la misma línea que tenía la intención de modificar, ya tenía un ejemplo.
El quid de la cuestión es que se puede incrustar fragmento de concha en los literales de cadena en configure.in
y el configure
archivo resultante (la cáscara de ejecutar el script de shell, en realidad) siempre ejecutar ese fragmento de concha para construir la cadena resultante.
Consulte el patch. Los siguientes son los parches para configure.in
y la sección correspondiente del archivo resultante configure
.
AC_DEFINE_UNQUOTED(PG_VERSION_STR,
- ["PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit"],
+ ["PostgreSQL $PACKAGE_VERSION (commit `cd $srcdir && git log -1 --format=format:%h`) on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit"],
[A string containing the version number, platform, and C compiler])
resultante configure
código:
cat >>confdefs.h <<_ACEOF
-#define PG_VERSION_STR "PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit"
+#define PG_VERSION_STR "PostgreSQL $PACKAGE_VERSION (commit `cd $srcdir && git log -1 --format=format:%h`) on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit"
_ACEOF
Postgres versión de cadena antes y después de la revisión de seguridad:
PostgreSQL 9.3.0 on x86_64-unknown-linux-gnu, compiled by ...
PostgreSQL 9.3.0 (commit 2cf9dac) on x86_64-unknown-linux-gnu, compiled by ...
Si está utilizando un sistema de tipo Unix, se podría escribir un git- gancho para realizar un 'sed -i 's/\ $ Revision/$ REVISION/g' configure.ac' (solo un ejemplo). La varilla '$ REVISION' puede contener el resultado de' git describe' si lo desea. Suena plausible? De lo contrario, puede usar '$ Id: $', que será reemplazado por el sha1 del blob (no el commit). Ver [esta pregunta] (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent). – jweyrich
Lea también [por qué esta no es una buena idea] (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent/384640#384640) cuando se utiliza un SCM distribuido. – jweyrich
Ver http://stackoverflow.com/questions/3593003/injecting-mercurial-changeset-as-version-information-in-ac-executable/3607158 –