Модель ветвления Mercurial для функций задач - PullRequest
2 голосов
/ 02 мая 2011

enter image description here

Моя среда разработки: Windows 7, TortoiseHg, ASP.NET 4.0 / MVC3

Тестовая ветка: код на тестовом сервере Филиал Prod: код на производственном сервере

Это моя текущая модель ветвления. Причиной разветвления каждой задачи (функции) является то, что некоторые функции начинают работать медленнее. Таким образом, на приведенном выше графике задача 1 была завершена ранее (набор изменений № 5) и объединена с тестовой веткой для тестирования. Однако из-за ошибки или модификации исходного запроса были внесены изменения # 10, # 12. В то время как задание 2 завершило тестирование # 8 и уже перешло к жизни # 9.

Моя проблема заключается в том, что каждый раз, когда нужно изменить ветку задачи (например, # 10, # 12), мне нужно выполнить еще одно слияние с тестовой веткой (# 11, # 13), это делает график очень грязным.

Есть ли способ решить эту проблему? Или лучшая модель ветвления?

Ответы [ 3 ]

3 голосов
/ 28 июня 2011

Похоже, вы пытаетесь реализовать стратегию ветвления функций. Однако, исходя из вашей диаграммы, я думаю, что вы пропустили несколько шагов и / или объединяете неправильные ветви. По сути, у вас, вероятно, должно быть более 4 линий разработки плюс 1, представляющая все ветви функций. К сожалению, мне не удалось найти хорошую диаграмму, за исключением одного разговора о Git и работоспособной стратегии ветвления здесь . Диаграмма, тем не менее, лучше объясняет, что вы ищете, даже если вы используете другой DVCS, такой как Mercurial (моя любимая). Используя Руководство по ветвлению в Mercurial и Hg Book Стива Лоша, вы сможете реализовать хорошую стратегию ветвления функций, которая работает для вас. У Стива есть плюсы / минусы для каждого подхода.

И, нет, вам не нужно клонировать, чтобы правильно разветвляться. В Mercurial есть именованные ветви, которые позволяют легко переключаться между ветками, если вы обычно работаете над несколькими незавершенными элементами и / или выполняете проверки / тестирование кода для других разработчиков. При любой веб-разработке с IIS легче работать с именованными ветвями, так как вещи не перемещаются, и разные версии могут продолжать работать с той же конфигурацией в IIS.

Я должен сказать, однако, что ветвление объекта или любое другое имя, которое вы ему даете, почти всегда является плохой идеей, поскольку ветки, которые работают слишком долго (скажем, год, который я видел с катастрофическими результатами), практически невозможно объединить вернуться, если вы часто (ежедневно) управляете синхронизацией между ветвью функции и ее родителем. Этот тип накладных расходов на обслуживание не стоит хлопот, и вам лучше придерживаться основанной на транках разработки с ветвями релиза для исправления ошибок и исправления кода в абстрактном коде, который используется в производстве и не завершен.

0 голосов
/ 02 мая 2011

Вместо этого вы можете использовать отдельные репозитории для каждой ветви. Затем перебазируйте изменения последней версии. Это может уменьшить количество слияний.

0 голосов
/ 02 мая 2011

Если вы хотите поработать над новой функцией, вам лучше сделать клон из тестового репо.Предполагается, что ветки в Mercurial не связаны ... Представьте, что вы сделали релиз v1.0 и собираетесь работать на v2.0 вашего приложения (ветка по умолчанию).Вы создадите ветку v1.0, чтобы обновлять ее, исправляя ошибки.

...