Цитата(Ruslan1 @ Jun 16 2011, 14:13)

При каждой компиляции это как-то жестко, у меня и сотня мейков в день бывает, и каждому новый номер давать? ...
Да, каждой компиляции - свой номер. Я такое видел, например, в AVR Studio, там в хелп о програме было примерно следующее 4.18 SP2, Build 678.
Для чего это нужно: отдают мне плату и говорять что там баг. Мне нужно залезть в нее отладчиком. А исходники к этому времени изменились. Да и не помню какая версия там была(месяца полтора прошло). Как отлаживать, перезаливать нельзя, тк баг может измениться.
Так вот малйшее изменение должно отслеживаться. А вручную проставлять геморно и можно забыть прописать номер.
Написал простенький скрипт для этих целей
CODE
#!/bin/sh
filename=../version.h #путь до файла с версией
if [ -f $filename ] #если файл существует
then
while read line #поиск по всему файлу
do
if [[ ${line:0:24} == "#define _BUILD_NUMBER__ " ]] # вот этой строки
then
build_number=${line:24} # с 24 символа считать предыдущий номер билда
build_number=$((build_number+1)) # инкремент
break
else
build_number=1
fi
done <$filename
else
build_number=1
fi
build_date=$(date +%Y%m%d%k%M%S) # берем дату
echo "_BUILD_NUMBER__ = $build_number" # при построении будет отображаться текущий номер и дата
echo "_BUILD_DATE__ = $build_date"
rm -Rf $filename # удаляем старый файл
echo "#ifndef _VERSION_H__" >> $filename
echo "#define _VERSION_H__" >> $filename
echo "#define _BUILD_NUMBER__ $build_number" >> $filename # тут просто число
echo "#define _BUILD_DATE__ \"$build_date\"" >> $filename # тут строка т.к. число большое ИМХО лучше строкой
echo "#endif" >> $filename
echo >> $filename
Прошу за код не пинать - это мой первый скрипт на баше.
Этот код можно вызвать перед построением. В эслипсе это прописыватся в Properties -> C/C++ Build -> Setings -> Build Steps -> Pre-Build Steps -> Command. Там я прописал "sh /home/brain/workspace/arm/test_ml/version.sh"
сча думаю как еще дописать, чтоб этот скрипт в git коммит сам делал, вроде это должно быть не сложно. Когда допишу наверна выложу здесь.