как QA тестирует код и сливается со стабильной веткой в mercurial?

Моя команда разработчиков только начинает работать с Mercurial, и мы запутались в следующем:

Мы php webdev команда.

У нас 3 разработчика. Большая часть того, что мы делаем сейчас, это исправления ошибок в очень новом продукте. Также мы занимаемся разработкой новых функций.

У нас есть 2 человека QA. Каждое исправление и функция должны быть протестированы, прежде чем они будут запущены.

Пока что у каждого разработчика есть свой собственный репозиторий. У нас есть центральный сервер под названием WebDev с собственным репозиторием. Разработчик берет из WebDev, затем вносит некоторые изменения (т.е. исправляет ошибку) и отправляет в Webdev. Затем QA-тестер тестирует код на центральном сервере (таким образом, тестируя код в WebDev), и если он работает, он переносит этот код на наш рабочий сервер.

Это не очень хорошо работает, потому что... что происходит, когда разработчик-1 (dev-1) исправляет ошибку и переносит ее на WebDev. В то же время dev-2 исправляет другую ошибку и отправляет в WebDev. QA-специалист тестирует код там и одобряет второе исправление, но не первое. Как он сможет отправить второй набор изменений в продакшн без первого? Похоже, мы теряем все преимущества системы контроля версий.

Я много читал о ветвлении, но я не могу понять, как заставить это работать для нас... создаем ли мы новую ветку для каждого исправления и новой функции, и только после того, как она будет протестирована, QA будет сливать ее в ветку по умолчанию на WebDev? Это лучший способ, или я что-то упускаю?

Спасибо!!!

----UPDATE----

Спасибо всем, кто ответил до сих пор. Вот, где я сейчас нахожусь... я могу думать о двух решениях.

1) dev-1 исправляет ошибку для bug-101. он берет из webdev, сливает и коммитит локально. он устанавливает это в тестировании. QA берет непосредственно из его репозитория и тестирует локально. если все проходит, QA берет из webdev -> объединяет -> отправляет в webdev (и если это большое изменение, может еще раз просмотреть его там, чтобы убедиться, что все в порядке). таким образом, мы тестируем только одну вещь за раз, WebDev содержит только изменения, которые были проверены локально тестировщиками и всегда стабильны.

2) создавать ветки для всего. dev-1 создает ветку "bugfix-101", затем толкает ее в webdev без слияния. QA может протестировать код ветки, и если он одобрен, слить его с веткой по умолчанию. У меня есть четыре вопроса по этому методу - (а) можно ли переместить открытую ветку в удаленный репозиторий? (b) если QA объединит и закроет ветку на webdev, то в следующий раз, когда я буду вытаскивать, мое локальное репозиторий также закроет и объединит ветку? и (c) как вы тестируете из разветвленного кода? когда я запускаю веб-приложение в браузере, как я тестирую из ветки??? (d) есть ли проблемы с производительностью при создании такого количества именованных ветвей (предполагая, что большинство из них будут быстро закрыты)?

Еще раз спасибо.

9
задан esther h 21 December 2011 в 10:34
поделиться