Моя команда разработчиков только начинает работу с Mercurial, и мы запутались в следующем:
Мы команда php webdev.
У нас есть 3 разработчика. Большая часть того, что мы делаем сейчас, это исправления ошибок в совершенно новом продукте. Также занимаюсь разработкой новых функций.
У нас есть 2 сотрудника QA. Все исправления и функции должны быть протестированы, прежде чем они будут запущены.
Пока что у каждого разработчика есть свой репозиторий. У нас есть центральный сервер под названием WebDev с собственным репо. Разработчик извлекает данные из WebDev, затем вносит некоторые изменения (т. Е. Исправляет ошибку) и передает Webdev. Затем тестер QA проверит код на центральном сервере (поэтому тестирует код в WebDev) и, если он сработает, отправит этот код на наш рабочий сервер.
Это не очень хорошо работает, потому что ... что происходит, когда Developer-1 (dev-1) исправляет ошибку и выдвигает WebDev. В то же время dev-2 исправляет другую ошибку и добавляет WebDev. специалист по тестированию тестирует там код и утверждает второе исправление, но не первое. Как бы он подтолкнул второй набор к производству без первого? Похоже, мы теряем все преимущества системы контроля версий.
Я много читал о ветвлении, но я не могу понять, как заставить это работать для нас ... мы создаем новую ветку для каждого исправления и новой функции, и только после того, как она проверена, QA слиться с веткой по умолчанию на WebDev? Это лучший способ, или мне чего-то не хватает?
Спасибо !!
---- UPDATE ----
спасибо всем, кто ответил до сих пор. вот где я сейчас держусь ... я могу придумать два решения.
1) dev-1 исправляет ошибку для bug-101. он тянет с webdev, сливается и фиксирует локально. он устанавливает это в тестировании. QA тянет прямо из своего хранилища и тестирует локально. если он пройдет, QA вытащит из webdev -> merge -> push в webdev (и, если это большое изменение, можно еще раз просмотреть там, чтобы убедиться, что все в порядке). поэтому мы тестируем только одну вещь за один раз, WebDev содержит только те изменения, которые были протестированы локально тестировщиками и всегда стабильны.
2) создавать ветки для всего. dev-1 создает ветку "bugfix-101", а затем передает ее в webdev, не объединяя ее. QA может протестировать разветвленный код и, если он утвержден, объединить его с веткой по умолчанию. У меня есть четыре вопроса по этому методу: (а) возможно ли отправить открытую ветку в удаленный репозиторий? (б) если QA объединит и закроет ветку на webdev, в следующий раз, когда я вытащу, будет ли локальное репо также закрываться и объединять ветку? и (c) как вы тестируете из разветвленного кода? когда я запускаю веб-приложение в браузере, как я могу выполнить тестирование из ветви? (d) есть ли проблемы с производительностью при создании такого количества именованных ветвей (при условии, что большинство из них будут быстро закрыты)?
Еще раз спасибо.