Я принял что номер билда соответствует количеству коммитов в системе контроля версий и написал такой совсем маленький скриптик.
cd $SOURCE_ROOT;
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NUMBER_OF_COMMITS" Snippets/Info.plist;
Открываем проект и в Build Phases добавляем Run Script как показано на скриншоте.
Если вам необходимо увеличить номер билда на какое-то значение (в моем случае увеличивается потому что репозиторий создавался не с самого начала работы над проектом) то добавляем такую строчку.
#...
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;
NUMBER_OF_COMMITS=$(($NUMBER_OF_COMMITS + 100));
#...
Теперь каждый коммит в БД будет содержать новый, постоянно увеличивающийся, номер билда.
Когда я писал этот скрипт я загнался вопросом что номер билда должен соответствовать количеству коммитов в ветке репозитория где этот код находится. Нет. Если мы релизим программу из ветки которая ниже чем самая высокая, то у нас не должен понижаться номер билда иначе обновление в Sparkle не пройдет. Поэтому этот номер должен всегда увеличиваться, и лучше всего это отображается в количестве всех коммитов в репозитории.


Не работает. При запуске программы выдаёт, что не смог запустить скрипт.
ReplyDeleteXCode 4.2
При запуске какой программы и не мог запустить какой скрипт? По этой инструкции номер билда изменяется когда билдуется проект.
ReplyDeleteдобавлю: если кто-то хочет не номер билда основанный на количестве коммитов, а короткий хэш коммита (типа такого: "d4ac953"), то "NUMBER_OF_COMMITS=`git rev-parse --short HEAD`;" (переименовать переменную по желанию). =)
ReplyDelete