В данный момент репозиторий для Open Real Estate пришлось разделить на три ветви:
Так же настроены роботы, которые обновляют демо-сайт, проставляют номера версий в релизе и др. Именно из-за роботов пришлось разделить всё на ветви. До этого делались попытки обновлять всё вручную (создавать архив релиза, ложить на демо-сайт через ftp). Но это большие расходы времени разработчика - код приходилось править в трех местах, поэтому решил потратить время один раз и перевести всё на полуавтоматические рельсы.
Собственно, эта заметка объясняет основные моменты использования репозитория с именованным ветвями - как, например, собрать правильное демо, применяя к ветке demo изменения из ветки default.
Итак, нам надо переключиться в одну из веток, например demo. Выполняем:
hg update demo
Ура, мы в ветке demo. Теперь нам надо актуализировать её. Ведь, скорее всего, основная ветка "ушла" далеко вперед, там уже множество правок. А наша текущая ветка demo старенькая, и не содержит, например, свежих багфиксов. Выполняем команду:
hg merge default
В этом случае все изменения (если они есть) в ветке default применятся к текущей ветке. Если все прошло без конфликтов - замечательно. Но что же делать, если возникли конфликты? В предыдущей статье я начал рассказывать про основы пользования программами-"сливалками". Собственно, проделываем все те же самые операции - разрешаем конфликты (результирующий код слияния должен быть в файле LOCAL).
После слияния не забываем сделать: hg commit -m "Актуализация ветки demo"
После чего вносим изменения в данную ветку (если они нужны) и снова делаем коммит, после чего отправляем все наши изменения на сервер: hg push
Единственный момент, который может омрачить счистливое следование этой инструкции - это ошибка при попытке слияния:
abort: merging with a working directory ancestor has no effect
Ничего страшного - это лишь указывает на то, что у нас demo-ветка содержит все актуальные изменения.
Спасибо за внимание!
PS: комментарии, замечания и вопросы приветствуются.