2009-07-31 6 views
3

Я работаю с командой разработчиков среднего размера, которые работают над одним продуктом. Разработчики пишут код для обращения к биту с функцией или ошибкой, а затем проверяют его в нашей основной ветке развития (в Subversion). Как только билет был протестирован и проверен там людьми QA, я объединил его в багажник. Обычно я делаю это вручную, так как многие билеты охватывают несколько версий, которые не всегда являются последовательными и могут включать исправления для нескольких билетов одновременно.Как я могу управлять слиянием обновлений от нескольких разработчиков?

Одна вещь, которая, я уверен, поможет, поощряет разработчиков только проверять один билет за ревизию. Мы используем Jira для отслеживания наших задач, поэтому в каждой ревизии Subversion должен быть идентификатор проблемы Jira в журнале - когда я скрепляю код, я ищу варианты, включающие проблему, с которой я объединяюсь.

Есть ли там другими способами я мог бы справиться с этим лучше? Другие команды отходят от ствола для каждого билета и выпуска? Как я уже сказал, у нас есть одна основная отрасль развития, по крайней мере частично потому, что мы быстро создаем много новых функций, и я думаю, что мы сможем быстро завершить работу с десятками филиалов, если мы сделаем по одному для каждого билета.

ответ

4

Этот вопрос не имеет ничего общего с DVCS или нет. Это проблема PROCESS, а не технология. Вот мой взгляд на то, что многие люди делают, и процесс, который ClearCase UCM способствует:

/project/trunk 
     /branches 
      /release-1.0-JIRA1023 
      /release-1.0-darthcoder-JIRA1029 
      /darthcoder-JIRA1029 

     /branches/release-1.0-tfix <- This is the patch trunk. Main trunk is future dev 

Когда я исправить свою ошибку, я назначу его обратно к стволу или к конкретному выпуска I» m пытается исправить. Я буду сливаться, чтобы выпустить 1.0-tfix и в багажник, потому что его нужно исправлять в нескольких местах. Когда закончите, я удалю ветку и перейду к следующей проблеме. Таким образом, у меня есть две ветви кода с исправлением JIRA, когда я тестирую его и работаю над проблемами (если исправление дико расходятся).

Но ничто не продвигается к стволу или деревьям -tfix, если не выполняется успешный цикл сборки/тестирования, и у него есть свойство JIRA для отслеживания. Таким образом, вы можете привязать каждое отдельное исправление к разработчику, ветке и проверить правильность исправления. Кроме того, эти проблемы не утеряны (о, JIRA1029 сделал это в версии 1.2? Ну, вы можете проверить, что, глядя на JIRA1029 в вашем репозитории, вам никогда не нужно УГАДАЙТЕ, и это то, что делает разработку программного обеспечения повторяемой и приближает нас к ошибкам == 0.

+0

Интересно. Быстрый вопрос. Всегда ли вы создаете ветку для каждой Джиры или есть ситуации, когда вы фиксируете набор билетов Джиры сразу в одной ветке? –

+0

Вы можете исправить несколько ошибок/jira в одной ветке, но IDEAL UCM - это создание минимальных наборов изменений для каждого исправления. Предположим, вы работаете над ядром linux, и вы распространяете исправления. Что вы хотите предоставить конечным пользователям, один большой кусок исправлений, которые могут не относиться к ним (и, возможно, быть вредными), или небольшие целенаправленные хирургические исправления? Есть аргументы для обоих методов, но я являюсь большим сторонником объединения 1 JIRA - 1, где это возможно. С большими JIRA (как новые функции/улучшения) это может стать менее практичным. –

0

Вы работаете над параллельными выпусками? Для всех моих проектов, которые не имеют большой параллельной версии разработки (обычно < 10 devs), мы работаем в багажнике. Один сеанс должен применяться только к одному билет. Если это произойдет, чтобы исправить другой билет, билет обновляется и помечен для проверки.

Почему вы слияете? Это ваш обзор кода или ваш способ убедиться, что сборка не сломана. до некоторой степени непрерывной интеграции и пропустить этот шаг. способный доверять вашим разработчикам, чтобы не сломать сборку, и CI поймать их, если они это сделают.

+0

Я думаю, что для разработчиков лучше всего работать в своих филиалах и выполнять слияния. багажник должен быть чистым и устойчивым во все времена.Я знаю, как разработчик, мне очень нравится проверять сломанные вещи, потому что я знаю, что собираюсь внести существенные изменения, чтобы исправить это и/или рефакторинг. Вы не хотите делать это в багажнике. CI замечательный, и вы должны его использовать, но багажник должен строить продукт, а не заниматься разработкой. IMHO. :-) –

+0

Я делаю свои ветви, когда собираюсь внести существенные изменения и вручную объединить их в сундук. Я чувствую, что по большей части команда должна делиться филиалом на весь выпуск. Если вы создаете отдельные ветви для каждого разработчика или для каждого билета, я думаю, вы столкнетесь с более сложными вопросами интеграции. Так что, короче говоря, общая ветка с CI и создавайте только одноразовые ветви для основных изменений. – Gren

Смежные вопросы