Здравсвуйте!
ANest писал(а):У каждого продукта есть версии: 1.0, 1.6, 2.0 и т.д. Каким образом организована идентификация версий вашего продукта в ветке release? Используете ли вы tag'и?
От тэгов отказались, неудобно оказалось.
Было как: сливаются все изменения в ветку release, тестируются. Вроде бы как работает. Навешиваем тэг, запускаем срипт, который собирает архив. Частенько бывает - что в базе какие-то изменения не те перетянулись или еще что-то по-мелочи. То есть архив есть, продукт выпущен, но скачиваний еще очень мало. Вместо того, чтобы делать еще одну релизную версию - быстро правим текущую версию, но опа - у нас уже навешан тэг, надо вешать снова..
Поэтому делается просто. Сливаюся все изменения в ветку release. Запускаю скрипт, который проставляет во все файлы текущую версию продукта (указываю руками) и собирает архив для скачивания. Если что-то надо поправить - вносим правки в ветку и запускаем скрипт с той же версией в параметрах, всё пересобирается.
Проблемы идентификации не возникает - так как от выпуска до выпуска никто ветку не трогает. Что происходит выпуск - пишу в комментариях к коммиту.
ANest писал(а):Что делать в этом случае? Другие разработчики, вытянув (pull) изменения в свои локальные репозитории, могут попасть в неприятную ситуацию. Я прав?
Глобально проект не ломался ни разу:)
Структура проекта полностью модульная, над одним модулем работает один человек. Чтобы всё сломать - очень постараться надо.
Модули бывает ломаются из-за того, что забыли какие-то изменения в базу положить. Решается в течении пары минут, бывает такое 3-4 раза в месяц. Не работает в данном случае, напоминаю, только один из модулей. Все прекрасно могут работать дальше над своими модулями не обращая внимания на ошибку.
ANest писал(а):Затем, когда менеджер проекта утвердит реализации, слить с той же веткой default
Таких проблем не возникает, так как никто никому не мешает (у каждого свой модуль). Реализацию каких-то фич, внешний вид и пр. описывается до начала разработки. Поэтому при коммите все прекрасно вписывается в дизайн и функционал.
Вообще, пункты 2-3 были бы актуальны, если бы иначе была поставлена работа, продукт был бы не модульный или в качестве репозитория был svn, где слияение и переключение между ветками - задача та еще.
Собственно, мы пример того, как модульность и рабочий процесс обеспечивают совершенно безпроблемную работу. Никто никому не мешает, не злится "опять он всё сломал" - слияние почти всегда проходит без конфликтов в автоматическом режиме, а высокая скорость разработки на Yii позволяет каждый день коммитить работающий код.