Какой тип версии выбрать при возврате назад / вперед в версиях кода?+ TFS VS2010 - PullRequest
1 голос
/ 28 июня 2011

Мой единственный сотрудник ушел пару недель назад, и теперь мне нужно объединить все вместе, создав базовую рабочую среду для моего нового разработчика и меня. Мой предыдущий сотрудник выполнял большую часть управления, связанного с нашим Team Foundation Server.

Моя текущая структура состоит из 4 веток и ветки ошибок.Ветвь A и ветвь B были нашими отдельными ветвями разработки, которые были разветвлены от центральной ветки разработки (ветка C).Центральная ветвь Dev (ветвь C) была получена из главной ветки (ветвь D).Ветка ошибок не должна влиять на мою проблему, поэтому она должна остаться без имени.

Некоторое время назад я совершил несколько ошибок, пытаясь объединить все вместе, поэтому я вернулся к рабочим версиям ветви A, ветви B и ветви C.

Теперь, когда у меня естьПолученные рабочие версии Branch A, B и C я хочу начать объединение Branch A / B с C. Я полагаю, что технически я не работаю с новейшим кодом, и так как я вернулся к более старым версиям, которые мне, возможно, придетсяизмените «Тип версии» на что-то отличное от «Последняя версия».

Version Type

Должен ли я изменять тип версии или оставить ее как Последнюю версию и быть на моемспособ слияния?

Ответы [ 2 ]

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

Когда я читаю вопрос, структура ветви выглядит примерно так:

D (Main) 
--C (Dev)
----A (Developer1)
----B (Developer2)
--?Bugs

Быстрые термины (поэтому я могу использовать краткую запись):

  • FI = Прямая интеграция (из родительской ветви в дочернюю)
  • RI = обратная интеграция (от дочерней ветви до ее родительской ветви)
  • Ветвь C является родителем ветви A и ветви B. A и B являются дочерними из C.

Исходный вопрос звучит так: существует следующее состояние:

  1. A и B имеют изменения, которые не были связаны с C.
  2. Вы отменили предыдущие попытки слияния в C, B и A.
  3. (?) Вы зафиксировали откат в каждой ветви (используя откат tf.exe ...), поэтому, когда вы «получаете последние» из каждой ветви, у вас есть рабочие версии, а не сбойные версии слияния.

Вот моя рекомендация:

  1. Откат к стабильным версиям A, B и C (если вы этого еще не сделали).
  2. C-> A, проверка, A-> C, проверка ОК.
  3. C-> B, проверка, B-> C, проверка в порядке.

подробности:

  1. Откат до рабочей версии A, B и C (если вы этого не сделали уже есть)
  2. FI от C-> A (C до A)

    • разрешить все конфликты, которые вы можете
    • создать набор полок для вашего
      в ожидании слияния
    • Теперь тест в A
      пока вы не уверены, что слияние было успешно, и у вас есть все C, работающие со всеми A.
    • Передать изменение слияния на A.
  3. RI от A до C,

  4. Повторите шаги 2 и 3, начиная с C-> B, затем B-> C

СОВЕТ:"A" может быть в зависимости от того, какая ветка разработчика имеет самые простые или важные изменения.

* Если вы решите не фиксировать изменение для отката к более ранней «стабильной» версии, то вам, вероятно, нужно использовать опцию «Тип версии» ... но если во всех трех ветвях есть изменения, требующие отката, то вам по крайней мере нужно откатить c, затем объедините предыдущую версию A. Я лично предпочел бы начать со всех трех ветвей, чьи последние версии должны быть рабочими версиями, с которыми вы хотите продолжить. (Слияния уже достаточно сложны без необходимости слияния с конкретным набором изменений).

Сценарий, который вы описали, очень распространен, но не оптимален. Если и A, и B часто выполняют слияния с C (после выполнения FI и тестирования каждый раз), тогда ваша задача слияния будет намного меньше.


ДВИЖЕНИЕ ВПЕРЕД

Я пара рекомендаций, которые могут уменьшить ваши будущие боли слияния.

  1. Для повседневной работы разработчики могут использовать TFS shelvesets для ожидающих изменений, а затем переходить непосредственно в общую ветку dev. Полная ветвь требуется только в том случае, если вам требуется изоляция (например, работа с конфликтующими изменениями одновременно или ИЛИ несколько разработчиков, работающих над критическими изменениями)
  2. Создавайте дочернюю ветку из общей ветки разработчика только тогда, когда вам нужна изоляция от других изменений разработчика. Например, если вы реализуете критическое изменение, требующее работы обоих разработчиков, вы можете создать «функциональную» ветку, один или оба разработчика могут работать над этой функцией, не дестабилизируя ветку разработчика, а затем вернуться к ветви Dev, как только функция стабильна.
  3. FI Слияние от родителей к детям часто! В противном случае слияния становятся очень трудно согласовать.

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

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

Наслаждайтесь!-Zephan

1 голос
/ 28 июня 2011

Если A и B являются ветвями разработки (под этим я подразумеваю ветку, в которой новый код / ​​функции добавляются отдельно к основной разработке), созданной из C, и они достигли конца своей жизни, то их необходимо реинтегрировать обратно в C. Правильно сделать слияние последней версии A или B на C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...