2012-03-30 2 views
4

У нас есть несколько разработчиков, которые поддерживают ручной слияние в TFS 2010, это когда вы открываете две визуальные студии, одну с ветвью источника и другую с целевой ветвью, и вы вручную копируете & вставьте свои изменения.Как слияние TFS работает?

Они делают это так, потому что считают, что автоматическое слияние опасно (так как это приводит к изменениям других разработчиков, даже если вы этого не хотели). И типичный тест следующий:

Источник Отрасль:

TestFile.cs 
Changesets: 
1. Line 5 changed 
2. Line 13 changed 

Цель Отрасль:

No changes yet. 

Теперь я хотел бы объединить только ревизии # 2 для TestFile. cs

Какие линии будут получены в результате Tes tFile.cs в целевой ветке содержат, если они объединены автоматически: исходная строка 5 и измененная строка 13 или обе строки 5 и 13 изменились?

Фактически я видел оба варианта, и я не знаю почему.

Любая ссылка на отличное описание того, как работает слияние TFS, было бы здорово.

Расширенный сценарий: Источник Отрасль:

TestFile.cs 
Changesets: 
#1. Line 5 changed, Line 6 added 
#2. Line 13 changed 

Цель Отрасль:

No changes yet. 

Если бы я только сливаться # 2 набора изменений, что я должен получить в целевой отрасли? Я только получу строку 12, измененную в соответствии с набором изменений №2.

ответ

5

При выборе сливаться следующий диалог откроется:
enter image description here
Если вы просто выбрать «Next» и сохранить настройки по умолчанию = «Все изменения до определенной версии», TFS будет принимать во внимание оба ваши изменения (1 & 2): другими словами, он проверит Testfile.cs в Целевом отделении и отредактирует как Строка 5 & 13.
Если вы выберете «Selected Changesets» (как отмечено на рисунке выше), другое диалоговое окно появляются, когда вы можете выбрать, какие из кандидатов, которые вы хотите принять участие в слиянии. Итак, если теперь выберете changeet 2, TFS проверит Testfile.cs в целевом филиале & только править Линия 13.

То, что вы называете «ручным» слиянием, - извините за то, что оно многословно - ужасная практика.

Редактировать
На ваш вопрос Advanced сценария: Source Отрасль: Смогу ли я получить только линию 13 изменен в соответствии с # 2 набора изменений
Ответ определенное «Да».

Один из способов изолировать ситуацию - начать с папки Playground в SourceControl. & попробуйте со своими коллегами определить, что происходит.TFS-merge действительно прост, this Более старое сообщение может быть полезно для ваших исследований.

Я могу договориться о том, что «TFS-ошибки очень низки в моем списке приоритетов», с другой стороны - на вашем месте - я бы расследовал как первостепенную проблему слияния в вашей организации. То, что вы описали, на мой взгляд, просто не может продолжаться.

+0

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

+0

«Изменения, которые не были частью этого набора изменений», это невозможно, на мой взгляд. Если вы испытываете такую ​​ситуацию, либо это ошибка TFS, которую вы должны сообщить MS, либо это является результатом неправильного использования. – pantelif

+0

Я видел это своими глазами только вчера. Поскольку ошибки TFS очень низки в моем списке приоритетов, я не буду тестировать его дальше. Моя проблема заключается в том, что ребята из «ручного слияния» используют это как оправдание своей практики. И я хочу понять, что может привести к такому поведению, моя первая идея заключалась в том, что непревзойденными наборами изменений является причина, по которой TFS не может обработать слияние должным образом. Другая идея заключалась бы в том, что структурные изменения в файле (новые строки, удаленная строка) + выборочное слияние на основе наборов изменений приводят к сбоям в работе TFS. – BanditoBunny

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