Мы хотим перевести нашу команду (~ 10 разработчиков) из SVN в Mercurial. Мы пытаемся выяснить, как управлять нашим рабочим процессом. В частности, мы пытаемся выяснить, является ли создание удаленных головок правильным решением.
В настоящее время у нас очень большой репозиторий с несколькими смежными проектами. Они разделяют много кода, но части проекта развертываются разными командами (3 командами) независимо от других частей базы кода. Поэтому каждая команда работает над одновременными большими функциями.
То, как мы в настоящее время обрабатываем это в SVN, это ветви. У Team1 есть ветка для Feature1, такая же сделка для других команд. Когда Team1 заканчивает свое изменение, оно объединяется в транк и развертывается. Другие команды следуют за набором, когда их проект завершен, слияние конечно.
Итак, моя первоначальная мысль - использовать именованные ветви для этих ситуаций. Team1 делает ветку Feature1 из ветви по умолчанию в Hg. Теперь вот вопрос. Если команда НАЖМИТ эту ветвь в текущем / наполовину состоянии в хранилище. Это создаст вторую голову в репо ядра.
Моя первоначальная реакция была "НЕТ!" как это кажется плохой идеей. Обработка нескольких головок в нашем хранилище звучит просто ужасно, но есть некоторые преимущества ...
Во-первых, команды хотят настроить Непрерывную Интеграцию, чтобы построить эту ветку в течение их цикла разработки (продолжительностью несколько месяцев). Это будет работать только в том случае, если CI сможет извлечь эту ветку из репо. Это то, что мы делаем сейчас с SVN, копируем сборку CI и меняем ветку. Легко.
Во-вторых, любому члену команды легче запрыгнуть на ветку и начать работать. Без подталкивания к репо ядра они должны были бы получить толчок от разработчика в этой команде с информацией о ревизиях. Также возможно потерять локальные коммиты из-за аппаратного сбоя. Шансы значительно возрастают, если это ветвь одного разработчика, который придерживался подхода «не нажимай до конца».
И, наконец, просто для удобства использования. Разработчики могут легко зафиксировать и нажать на свою ветку в любое время без последствий (как они делают сегодня, в своих ветках SVN).
Есть ли лучший способ справиться с этим сценарием, который я могу пропустить? Я просто хочу мнение ветерана, прежде чем двигаться дальше со стратегией.
Для исправления ошибок нам нравится общий рабочий процесс Mercurial, анонимных веток, которые состоят только из 1-2 коммитов. Простота отлично подходит для этих случаев.
Кстати, я прочитал эту , замечательную статью, которая, кажется, одобряет Именованные ветви.