21 октября 2013 г.

Вот бывает что надо при сборке развесистого проекта брать информацию о id коммита, ветке и прочих радостях жизни.

Мы сделали так:
COMMIT=`git show --pretty=oneline|head -c 40`
BUILDN=`git log --pretty=format:'' | wc -l`
BRANCH=`git branch|grep '*'|awk '{print $2}'`

Так вот, так делать не надо. Потому что если захочется собирать проект чем-нибудь типа Teamcity, попадаешь на то, что все такие нормальные системы не выдёргивают полноценное дерево, а только последнюю ревизию, из-за чего всё вышенаписанное ломается.

Посему был приделан костыль такого вида:

ifndef COMMIT
COMMIT=`git show --pretty=oneline|head -c 40`
endif
ifndef BUILDN
BUILDN=`git log --pretty=format:'' | wc -l`
endif
ifndef BRANCH
BRANCH=`git branch|grep '*'|awk '{print $2}'`
endif

Теперь если эти параметры передаются в makefile из системы сборки(а она их знает), то обращений к гиту(которые по понятным причинам обламываются) не будет.

Знал бы где где костыль сломается, инвалидное кресло бы припас.