Как автоматическое управление версиями в Git с XCode 4? - PullRequest
0 голосов
/ 22 июня 2011

Я новичок в SCM, но мне просто нужны некоторые базовые вещи для контроля версий.

Я использую Git в XCode 4.

вопросы:

Как я могу автоматически дать моему проекту номер версии (например, 1.1.2), когда я фиксирую его в локальных репозиториях Git?

Предполагается, что номер версии Git связан с номером выпуска моего приложения? Я имею в виду, например, если версия моей рабочей копии 1.2.3 в Git, то будет ли изменена и версия в моем info.plist на 1.2.3?

Спасибо

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Управление версиями в Git НЕ относится к номеру выпуска вашего приложения. На самом деле не существует такой вещи, как «версия 1.2.3 в Git». Git коммиты ссылаются либо на хеш SHA, либо на имя ветки, либо на имя тега.

Большинство людей, которые обрабатывают номера версий, используют теги git для идентификации окончательной выпущенной версии своего продукта с одним из них. Итак, вы фиксируете свои последние исправления в своей тестовой ветке, она проверяет чистоту, вы объединяете ее в свою производственную ветвь и помечаете, что фиксируете со следующим номером версии.

Есть способы заставить это действие тега обновить номер версии вашего проекта в XCode, но ничего из коробки, и нет графического интерфейса для него, о котором я знаю. Вам нужно написать собственный хук в вашем репозитории git.

Кроме того, если вы используете интерфейс XCode4 для git, вы на самом деле не используете git, как он должен использоваться. Git - это удивительный инструмент, который Xcode предоставляет вам крошечный (и неправильный) интерфейс. Это стоит изучить. Я так разочарован интерфейсом Xcode для git, что даже не использую его. Я делаю свою работу в XCode и управляю своим хранилищем из командной строки.

1 голос
/ 01 июля 2011

Я использовал номера версий SVN в своем идентификаторе пакета ... и теперь перешел на git.Вместо контрольных сумм git commit теперь я использую количество строк журнала в качестве номера версии.

это мой скрипт:

REV=`git log --pretty=format:'' | wc -l | sed 's/\ //g'`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $REV" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
...