2010-04-23 11 views
13

Mam projekt GCC i chciałbym automatycznie dodać definicje daty kompilacji i numeru wersji (z git) do moich źródeł. Jaki jest najlepszy sposób na zrobienie tego?Jak dodać wersję i datę powstania do źródła?

Mój cel jest prosty, aby móc zrobić coś takiego na starcie:

printf("Test app build on %s, revision %d", BUILD_DATE, REVISION) 

Dla budynku używam zrobić z prostego Makefile.inc, nie autoconf lub coś takiego.

Odpowiedz

7

skończyło się za pomocą prostego polecenia jak to w moim Makefile:

echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h 
4

Podstawienie słowa kluczowego RCS nie jest obsługiwane natywnie przez Git, ale można je dodać za pomocą sterownika filtra gitattributes: Patrz "Git equivalent of subversion's $URL$ keyword expansion".

alt text

Na przykład (nie dokładnie odnoszą się do pytania, ale ilustruje ogólną zasadę):

git config filter.rcs-keyword.clean 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"' 
git config filter.rcs-keyword.smudge 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date: `date`\\\$/"' 

Będziesz oprzeć skrypt filtra na skutek git describe --tags nazwie z Makefile .

Jak wspomniano w na "Git ekwiwalent rozszerzenia słowa kluczowego $ URL $", sterownik filtrowania smużenie/usuwanie nie jest idealnym rozwiązaniem, a dodawanie wszelkiego rodzaju meta-danych bezpośrednio do danych (źródło) to generally a bad idea (masz debatę na ten temat w "What are the basic clearcase concepts every developer should know?").

Jednak masz dobry przykład takiego rozszerzenia Git słów kluczowych w this answer w "Jak włączyć ciąg znaków identycznych dla repozytoriów Git?".

Powiązane problemy