2008-09-09 2 views
19

Можно ли слиться с ветвью, которая не является прямым родителем или дочерним элементом в TFS? Я подозреваю, что ответ не такой, как это то, что я испытал при его использовании. Однако кажется, что в определенные моменты времени было бы действительно полезно, если бы выполнялись различные функции, которые могут иметь разные циклы утверждения (т. Е. Функция может быть утверждена до двух функций). Это становится чрезвычайно сложным, когда у нас есть производственные отделения, где мы должны объединить какую-то особенность в предыдущую ветку, чтобы мы могли выйти до следующей полной версии.Перекрестное слияние в TFS?

Наша текущая стратегия ветвления должна развиваться в багажнике (или магистрали, как мы его называем), и создавать ветку для стабилизации и выпуска в производство. Затем эту ветку можно использовать для создания исправлений и других вещей, в то время как mainline может расходиться для предстоящих функций.

Какие методы могут быть использованы в противном случае для смягчения сценария, такого как описанные выше единицы?

+1

Хеха, пилы это подтвердило это и было напомнено о моих днях с TFS. Рад сказать, что с тех пор, как я переехал в Гит около двух лет назад, мне не пришлось беспокоиться о таких вещах;) – 2012-09-19 20:54:43

+3

Неправильный Джоэл, хотя вам не нужно беспокоиться о технических ограничениях, git лучше в ветвях, вам все равно придется беспокоиться о дисфункциональном поведении ... Эти методы трансляции. – 2014-10-28 07:28:50

ответ

18

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

Tf merge /baseless <<source path>> <<target path>> /recursive 

Дополнительной информацию о безосновательных слияниях можно найти here

Кроме того, я нашел этот документ, который будет бесценным при построении наших TFS структуры ветвления Microsoft Team Foundation Server Branching Guidance

1

AFAIK вы можете это сделать, если ветви были созданы из той же исходной папки.

  • багажник/
  • ветвь/ -/feature1 (ответвляется от ствола) -/feature2 (ответвляется от ствола)

Если вы сделаете это, то вы должны быть в состоянии объединить между Feature1 и feature2.

Хотя мое разветвление/слияние опыта с TFS оставляет мне желание больше. Мне жаль, что у нас не было SVN.

2

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

1

Да, вы можете сделать беспочвенные слияния, но только из командной строки (tf.exe).

1

TFS позволит вам слиться с веткой, которая не является родительским/дочерним, - это называется необоснованным слиянием. Смотрите следующие ссылки:

From MSDN

From the TFS Team via CodePlex

Мы обычно делаем основные или дестабилизирующие изменения на ветке развития. Если рядом с крупным выпуском одного из наших продуктов почти все изменения будут внесены в филиал.