starałem się osiągnąć coś podobnego jak OP; Chciałem osadzić commit-id Git w ciągu znaków PostgreSQL. Kod w konfiguracji PostgreSta.w tej samej linii, którą zamierzałem zmodyfikować, już miałem przykład.
Istotą jest to, że można osadzić fragment powłoki w napisowych w configure.in
i otrzymaną configure
plik (powłoka wykonywania skryptu powłoki, faktycznie) będą zawsze wykonać ten fragment powłoki na budowę wynikowy ciąg.
Patrz: patch. Poniżej znajdują się łatki do configure.in
i odpowiednią sekcję z otrzymanego pliku 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])
kod wynikowy configure
:
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
PostgreSQL wersji ciąg przed i po patch:
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 ...
Jeśli używasz systemu uniksowego, można napisać git- hook do wykonania 'sed -i 's/\ $ Revision/$ REVISION/g' configure.ac' (tylko przykład). Zmienna '$ REVISION' może zawierać wynik' git description', jeśli będziesz. Brzmi prawdopodobny? W przeciwnym razie możesz użyć '$ Id: $', które zostanie zastąpione przez sha1 obiektu blob (nie commit). Zobacz [to pytanie] (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent). – jweyrich
Przeczytaj również (dlaczego to nie jest dobry pomysł) (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent/384640#384640) podczas korzystania z rozproszonego SCM. – jweyrich
Zobacz http://stackoverflow.com/questions/3593003/injecting-mercurial-changeset-as-version-information-in-ac-executable/3607158 –