Слияние между ветвями в TFS?

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

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

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

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

Joel Martinez 20.09.2012 00:54

Неправильный Джоэл, хотя вам не нужно беспокоиться о технических ограничениях, git лучше справляется с ветвлением, вам все равно нужно беспокоиться о дисфункциональном поведении ... Эти инструменты transend.

MrHinsh - Martin Hinshelwood 28.10.2014 10:28

Я бы порекомендовал вам перейти на TFS 2013.3 / VSO и перейти на командный проект на основе Git.

MrHinsh - Martin Hinshelwood 28.10.2014 10:29

«Невозможно определить рабочую область» / «Нет подходящего сопоставления»: используйте один локальный путь и один путь репо.

Emyr 23.02.2015 17:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
20
4
22 750
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

  • хобот/
  • ветви/ - / feature1 (ответвляется от магистрали) - / feature2 (ответвляется от ствола)

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

Хотя мой опыт ветвления / слияния с TFS заставляет меня хотеть большего. Я бы хотел, чтобы у нас был только SVN.

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

tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch

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

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

Из MSDN

От команды TFS через CodePlex

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

Ответ принят как подходящий

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

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

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

Также я нашел этот документ неоценимым при создании нашей структуры ветвления tfs. Руководство по ветвлению Microsoft Team Foundation Server

Я далек от эксперта по TFS, но я думаю, что вы можете объединять братьев и сестер, и я думаю, что это не безосновательное слияние.

Мы отделили нашу основную ветку (имя ветки «main») для функции (имя ветки «feature»), затем мне потребовалась часть работы в ветке, которая также была ответвлена ​​от основной ветки (имя ветки «dev»). Я бы рассматривал ветки feature и dev как братьев и сестер, поскольку они оба произошли от одного и того же родителя. Я объединил функцию в dev, и все файлы (14000) были помечены как слияние, некоторые были помечены как слияние, редактирование. Я не мог отменить (визуальная студия просто зависала), поэтому я принял слияние. Затем я объединил dev в main, затем вытащил main в функцию, и снова 14000 файлов были помечены для слияния. Я был очень расстроен и боялся, что так будет продолжаться.

На этом этапе мы сделали тестовый проект. Мы настраиваем main, затем разветвляем dev и feature от main. Мы повторили описанные выше шаги с тем же результатом. После того, как мы завершили слияние от основного к функции, все будущие слияния отображали только отредактированные файлы.

После нашего небольшого теста я завершил слияние от основного к функциональному. И, как и в случае с тестом, наши слияния теперь показывают только отредактированные файлы. Мы можем перейти от разработчика к функции, функции к основной, основной к разработчику и т. д.

Я заметил, что при ветвлении были изменены даты всех файлов. Может это проблема?

Другие вопросы по теме