У меня на тестовом сервере стоит gitolite (в нем находятся bare репозитории). На этом же сервере созданы хосты для сайтов. Например я разрабатываю проект, создаю две ветки master и development, development автоматически деплоится при пуше через git-ftp на этот же сервер. Вроде все хорошо, пока не наступает необходимость разработать две фичи одновременно. Я делаю ответвление от development в feature1 и feature2, по мере разработки приходится их мержить с development, чтобы продемонстрировать клиенту. Если например от feature1 отказались, начинаются проблемы с откатом ветки development. Или функционал обоих веток не совместим и вместе их сливать раньше времени не хочется.
Как вообще правильно поступать в такой ситуации? Хотелось бы иметь возможность как-то переключать ветку, которая показывается клиенту. Я так понимаю, что можно сделать clone в папку хоста, но мне этот метод не нравится так как появляется лишняя копия репозитория, плюс трудоемко все время лазить на сервер для переключения веток.
Почитайте про git-flow
Если кратко - ветка фичи должна вливаться в develop только когда она закончена.
Если нужно показывать клиенту в процессе - настройте автодеплой, так что бы каждая ветка выкладывалась на отдельный домен.
Разные домены сложно администрировать плюс увеличение количества копий. Хочется что-то более универсальное. Даже с текущим деплоем через git-ftp морока с настройками для веток.
gvozd1989: зачем делать деплой через git-ftp? можно не настроить хуки, зацепить к ним что угодно от phpci до собственного bash скрипта из 5 строчек - и все будет само выкладывать
Просто на данный момент git-ftp для меня самый простой метод выкладывать изменения на тест. Прежде чем делать свои скрипты я хочу узнать как подобная задача решается у других людей. phpci, на сколько я понимаю, сейчас деплой не поддерживает.
Делайте модель ветвления удобную для вас.
Никто не мешает сделать ветку для демо-релизов.
Например: development > demorelease, feature > demorelease. Если всё ок, то feature > development.
В git нет каких-то строгих запретов, правил, регламентов. Есть устоявшиеся практики а-ля gitflow, но это не панацея.
Это понятно, меня больше интересует сторона публикации ветки. Фактически сейчас у меня деплоится только одна ветка, а нужна возможность менять версии, как чекаут из репозитория.
Почему бы не пушить 2 ветки? Создать поддомен demo, клонировать репо и там показывать опредённые фичи из ветки с демо. Зачем скрещивать ветку основной разработки с фичами, статус которых не определён?
Мне бы хотелось избежать лишних манипуляций. Обычно я делаю одну фичу в один период времени, тогда слияние ветки с development и пушинг ее на сервер простая и быстрая процедура. Однако бывают ситуации когда разрабатывается две ветки и их как-то нужно просто выкладывать на хост без действий с конфигами и т.д.