2010-04-23 4 views
13

У меня есть проект GCC и вы хотите автоматически добавлять определения для даты сборки и номера версии (из git) в мои источники. Каков наилучший способ сделать это?Как добавить дату и дату создания в исходный код?

Моя цель проста, чтобы быть в состоянии сделать что-то вроде этого при запуске:

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

Для строительства я использую сделать с помощью простого Makefile.inc, не Autoconf или что-нибудь подобное.

ответ

7

я в конечном итоге с помощью простой команды, как это в моем Makefile:

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

Подстановка ключевых слов RCS не поддерживается Git, но может быть добавлена ​​с помощью драйвера фильтра gitattributes: См. «Git equivalent of subversion's $URL$ keyword expansion».

alt text

Например (не точно относятся к вашему вопросу, но иллюстрирует общий принцип):

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

Вы основывают свой сценарий фильтра на результат git describe --tags вызывается из вашего Makefile ,

Как уже упоминалось в this answer на «Git эквивалент расширения $ ключевого слова $ URL в Subversion», загрязнениям/ясно драйвер фильтра не является идеальным решением, и добавление любого рода мета-данных непосредственно в данных (источник) является generally a bad idea (у вас есть дебаты об этом в «What are the basic clearcase concepts every developer should know?»).

Тем не менее у вас есть хороший пример такого Гита расширения ключевых слов в this answer в «Как включить строку для идентификационной Git РЕПО?».

Смежные вопросы