2013-06-21 3 views
0

Мы развиваем наш проект следующим образом:пожеланиях в середине итерации

  1. список запросов Функция
  2. Оценка
  3. Coding
  4. Тестирование
  5. Tagging версии 1.x

Одна итерация обычно длится 1 месяц. Но иногда мы получаем немедленные запросы от менеджера проекта - «Ребятам нужна эта небольшая функция BADLY!» Здесь начинается что-то мне не нравится:

  1. реализуемый тег
  2. реализуемого ствол

Как вы имеете дело с между итерационным художественными запросами?

Спасибо.

+0

Вы отметили этот вопрос с помощью гибкого управления проектами и SVN. SVN - это деталь реализации. Он может применяться к любому контролю версий. * или * вы можете просто спросить о сборе вишни/слиянии. –

ответ

1
  1. изменить код на стволе
  2. объединить изменения из ствола в филиал последнего релиза (вишневого сбор)
  3. создать новый релиз от филиала выпуска

Если у вас нет ветви разблокировки, вы можете создать ее с помощью

svn cp ^/[email protected] ^/branches/release-20130621 

, где 1234 - это ревизия последней версии.

+0

Я не могу объединить изменения с багажника, потому что мой багажник находится в неустойчивом состоянии –

+1

@VladimirNani: По _unstable_ вы имеете в виду _ содержит дополнительные функции, которые не были тщательно протестированы_? В большинстве случаев это не имеет значения, потому что вы не объединяете их с ветвью релиза. Однако, если ваш багажник является хаосом, вы должны начать изменять его, например. используя ветви функций для существенных изменений в базе кода. – nosid

+0

спасибо! Я думаю, что ветви функций - это то, что я искал. –

0

Если возможно, мы пытаемся перенести запрос на изменение на следующую итерацию. Если это невозможно - мы готовим ETA и изменение даты/демонстрации/выпуска даты.

Все, что нам нужно, чтобы предупредить клиента о том, что запрос функции в середине итерации - это всегда плохая вещь. Когда он осознает, он ожидает такого положения дел.

+0

Значит, вы никогда не делаете быстрые патчи? –

2

У вас есть возможность уменьшить длину вашей итерации. Таким образом, дольше всего им нужно подождать две недели.

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

Уменьшение длины итерации не должно удваивать количество накладных расходов. If it hurts, do it more often.

1

Игнорирование вашей методологии проекта на данный момент, конечное состояние вашего репо после такого признака доставляется должно быть:

  1. У вас есть новый тег с увеличенным номером версии, и разница между ним а предыдущий тег - новая функция.
  2. Основная линия разработки (соединительная линия) включает в себя также такую ​​функцию, что новые ветви получают эту функцию, а существующие получат ее в следующий раз, когда они синхронизируются с багажником.

Как вы там зависит немного на макете репо и ее конвенций, но здесь есть два варианта (которые, кажется, соответствует тому, что вам не нравится):

  1. На новый отделите текущий тег (или существующую ветвь интеграции релиза, которая очистится), завершите исправление функции/ошибки, создайте новый тег и отпустите и объедините тег обратно в магистраль. Хороший вариант, поскольку он минимизирует риск того, что нежелательные изменения будут выпущены с исправлением ошибок. Слияние обратно в багажник может быть затруднено, если многое изменилось.

  2. Завершить функцию на багажнике сначала, вишня выбрать его в новую/существующую ветвь интеграции чистого выпуска, пометить ее и отпустить. Хорошо, потому что другие получают вашу функцию/исправление ранее. Слияние с интеграционной ветвью может быть затруднительным, что может замедлить выпуск.

Я думаю, что вариант 1 лучше, так как он обычно будет быстрее выпустить, так как любое слияние откладывается до тех пор, пока изменения будут перенесены обратно в ствол, и там меньше риска нежелательных изменений протекающих в прод.

Что касается методологии вашего проекта, если вы хотите разместить эту функцию, вы должны либо:

  1. уменьшить объем текущей итерации
  2. Задержка освобождения текущей итерации
  3. Получить дополнительные ресурсы (разработчик/с) или сделать сверхурочно, чтобы построить функцию

... Или некоторая комбинация эти.