Подвижный hg, я делаю его правильно?

Мы находимся в процессе преобразования от CVS до Подвижного hg.

Наша инфраструктура является Windows 2003/IIS6

  • Каждый разработчик разрабатывает на их машине
  • 1xDevelopement сервер
  • 1xStaging сервер
  • Продуктивная среда

Вот то, что я сделал до сих пор:

Установленный Подвижный на моей машине, на сервере разработки и на сервере подготовки.

  1. Созданный репозиторий на dev. сервере.
  2. Импортированный наш репозиторий CVS там.
  3. Клонированный, что репозиторий к моей локальной машине.
  4. Клонированный, что репозиторий к нашему серверу подготовки.

Для разработки в прошлом мы всегда совместно использовали 1 ответвление, не идеальное, но слияние было такой болью, которую мы никогда не беспокоили и имели дело с ним.

Теперь, если я понимаю правильно, мы должны делать это:

Локальный:

  1. ответвление hg myfeature1//Запускает работу над feature1

Срочный требуемый bugfix, с помощью влияния на ТЕ ЖЕ файлы в качестве нашей функции

  1. hg обновляют значение по умолчанию
  2. ответвление hg bugfix1//исправляет ошибку
  3. фиксация hg - газует на bugfix1//сделанная исправляющая ошибка, которую мы фиксируем
  4. нажатие hg - bugfix1-f версии//-f кажется нечетным здесь, вызывая для создания нового ответвления
  5. hg обновляют feature1//, мы возвращаемся для работы над feature1
  6. фиксация hg - газует на feature1//сделанная фиксация работы
  7. нажатие hg - газует на feature1

DEV

  1. hg переходит//, мы видим bugfix и feature1
  2. слияние hg - газует на bugfix1
  3. hg фиксируют//фиксирующий bugfix1
  4. слияние hg - газует на feature1
  5. фиксация hg//фиксирующий feature1//ведущее устройство Dev является теперь нашей основной соединительной линией, готовой к новому разработчику, содержащему feature1 и bugfix1.

Подготовка (QA должен выйти на том важном bugfix прежде, чем протестировать feature1

  1. hg, поступающий//, мы видим новый материал
  2. получение по запросу hg - газует на bugfix1
  3. слияние hg - газует на bugfix1
  4. фиксация hg
  5. //Тест QA и выход bugfix1 мы клонируемся к производству repo и синхронизации.
  6. //QA может теперь протестировать feature1, который мы закончили спустя несколько дней после этого bugfix1
  7. получение по запросу hg - газует на feature1
  8. слияние hg - газует на feature1
  9. hg фиксируют//фиксирующий слияние feature1
  10. //Тест QA feature1 и выход
  11. Мы клонируемся к производству repo и синхронизации.

Этот путь имеет смысл? Я усложняю вещи, и это укусит меня в заднице позже?

7
задан jfrobishow 21 April 2010 в 18:54
поделиться

1 ответ

Похоже, вы отлично разбираетесь в концепциях, но у вас есть некоторые странности и некоторые вопросы, я поразим их списком ниже:

  1. commit не принимает параметр --rev.Он фиксирует текущий рабочий каталог как новую ревизию, родительский элемент (или родительский элемент, если это слияние) - это то, что возвращает hg Родители , то есть всегда то, что вы сделали в последний раз hg update .
  2. ваш hg push --rev bugfix1 -f не требует -f в очень новых (1.5+) версиях mercurial. Исторически предупреждение «вы создаете новую голову» обычно означало, что вы забыли выполнить слияние, но теперь, если новая голова представляет собой новую именованную ветвь, предупреждение подавляется.
  3. Если бы я был вашим человеком, который делал экстренное исправление ошибки на моем локальном компьютере, я бы просто создал новый клон, сделал ветку и исправил там. Если вы настроили конфигурацию вашего веб-сервера / веб-приложения для поддержки того, что вы можете разрешать новые экземпляры в новых местах пути легко / автоматически
  4. В вашей промежуточной среде я признаю желание, чтобы они тестировали исправление ошибки независимо от функции, и это хорошо идея, ваша команда QA не должна объединяться. Сделайте / позвольте разработчикам объединиться, и пусть команда QA перенесет исправления слияния в свою рабочую область. Например, набор изменений разработчика, созданный на шаге 3 DEV, уже обеспечивает надлежащую интеграцию исправления и того, что должно было быть, поэтому попросите команду QA вытащить эту ревизию, которая будет в ветке «по умолчанию». Точно так же после того, как QA утвердил исправление и будет готов перейти к функции, попросите их вытащить из разработчика набор изменений, созданный на этапе разработки 5.

Помните, что слияние - это тоже кодирование - человек, выполняющий слияние, делает выбор. о том, что должно и чего не должно быть. Специалисты по контролю качества могут быть на это способны, но это работа разработчика.Кроме того, зачем делать это дважды? Обычная передача для этого - что-то вроде «QA, вытащите ревизию 897a9d9f9a7 и протестируйте, пожалуйста, разработчики». Если вы хотите пофантазировать, у вас может быть такой тег, как 'readyforQA', который разработчики перемещают по ветке 'default' по мере продвижения (в этом примере они добавили hg tag после шагов 3 и 5 и пусть QA знает, что есть что-то новое.

Единственный совет, который я вам дам, - не пытайтесь перестроить процесс. DVCS приводят к некоторому бессистемному способу работы, это немного пугает сначала, но имеет тенденцию работать. Вы обнаружите, что подгруппы и пары людей имеют клонов, о которых вы никогда не знали, и, в конце концов, если у вас есть несколько твердых правил, таких как «ничего не идет в производство без предварительного прохождения через QA "остальное вроде само собой работает.

4
ответ дан 7 December 2019 в 14:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: