Как добавить ревизию и дату сборки в источник? - PullRequest
13 голосов
/ 23 апреля 2010

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

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

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

Для сборки я использую make с простым Makefile.inc, а не с autoconf или чем-то подобным.

Ответы [ 2 ]

7 голосов
/ 27 августа 2010

Я использовал простую команду, подобную этой, в моем Makefile:

echo "#define GIT_REF \"`git show-ref refs/heads/master | cut -d " " -f 1 | cut -c 31-40`\"" > git_ref.h
4 голосов
/ 23 апреля 2010

Подстановка ключевых слов RCS изначально не поддерживается Git, но может быть добавлена ​​с помощью драйвера фильтра gitattributes: См. " Git-эквивалент расширения $ URL $ ключевого слова subversion ".

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.

Как уже упоминалось в в этом ответе на "Git-эквивалент расширения $ URL $ ключевого слова в Subversion", драйвер фильтра smudge / clear не является идеальным решениеми добавление метаданных любого типа непосредственно в данные (источник) - это как правило, плохая идея (у вас есть спор об этом в " Какие базовые концепции должны знать все разработчики?").

Тем не менее, у вас есть хороший пример такого расширения ключевого слова Git в этого ответа в разделе" Как включить строку идентификатора для репозиториев Git? ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...