Tôi đã cố gắng để đạt được một cái gì đó tương tự như OP; Tôi muốn nhúng Git commit-id trong chuỗi phiên bản Postgres. Mã trong cấu hình của Postgres.trong cùng một dòng mà tôi dự định sửa đổi, đã có một ví dụ.
Ý chính của nó là bạn có thể nhúng đoạn mã trong chuỗi ký tự trong configure.in
và kết quả là tệp configure
(trình bao thực thi shell script) sẽ luôn thực thi đoạn mã đó để tạo chuỗi kết quả.
Vui lòng xem patch. Sau đây là các bản vá lỗi cho configure.in
và phần có liên quan từ kết quả configure
tệp.
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])
Kết quả configure
mã:
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 chuỗi phiên bản trước và sau khi vá:
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 ...
Nguồn
2013-11-02 07:16:56
Nếu bạn đang sử dụng một hệ thống unix-like, bạn có thể viết một git- hook để thực hiện 'sed -i 's/\ $ Revision/$ REVISION/g' configure.ac' (chỉ là một ví dụ). '$ REVISION' var có thể chứa kết quả của' git describe' nếu bạn muốn. Nghe có vẻ hợp lý? Nếu không, bạn có thể sử dụng '$ Id: $', mà sẽ được thay thế bằng sha1 của blob (không phải là cam kết). Xem [câu hỏi này] (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent). – jweyrich
Cũng đọc [lý do tại sao đây không phải là một ý tưởng hay] (http://stackoverflow.com/questions/384108/moving-from-cvs-to-git-id-equivalent/384640#384640) khi sử dụng SCM phân tán. – jweyrich
Xem http://stackoverflow.com/questions/3593003/injecting-mercurial-changeset-as-version-information-in-ac-executable/3607158 –