Как работает слияние в TFS 2010? - PullRequest
4 голосов
/ 19 декабря 2010

Когда я объединяю файлы из одной ветви в другую и затем проверяю файлы в целевой ветви, извлекаются МНОГИЕ файлы, только те, которые изменились. Например, основные и критические ветви были одинаковыми, и мы внесли изменения только в 2 или 3 файла в ветви критического исправления. Затем я объединил Critical ==> Main и, когда пошел проверять изменения в ветке Main, я заметил, что было извлечено множество файлов, а не только 2 или 3, которые фактически были изменены в ветке Critical Fix. Более того, когда я сравниваю файл из основной ветви с файлом на сервере, мне говорят, что файлы идентичны. Если файлы идентичны, почему они проверены? Буду признателен за любую помощь, или даже ссылку, которая объясняет, как TFS 2010 сливается.

Ответы [ 3 ]

2 голосов
/ 19 декабря 2010

Инструменты слияния исходного контроля по умолчанию в Visual Source Safe, а затем в TFS всегда были довольно скудными - их часто смущали самые простые изменения, часто обнаруживались идентичные файлы как «измененные», а средство автоматического слияния часто терпело неудачу (включает в себя неправильные изменения).Я быстро усвоил недоверие к этим инструментам слияния (примерно в 1995 году) и с тех пор не видел никаких свидетельств того, что основные алгоритмы слияния вообще были улучшены.

Хорошая новость заключается в том, что выможет заменить клиентские инструменты слияния сторонними (я использую тот, который работает настолько хорошо, что я действительно доверяю его опции автоматического слияния. Однажды я потратил 2 дня (и не смог) выполнить сложное слияние с инструментами TFS ив конце концов купил этот сторонний инструмент и заново слил все успешно за 15 минут!)

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

1 голос
/ 01 апреля 2014

У меня была такая же проблема. Я создал ветку нашей ветки DEV и внес изменения в несколько файлов. Я зарегистрировал свои изменения и объединил последние изменения в DEV в свою ветку. После слияния все 30 000+ файлов в моей ветке были помечены как измененные. Как и cju, я обнаружил, что сравнение большинства файлов показало, что никаких изменений не было сделано.

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

Я надеюсь, что другие смогут исправить свою ситуацию так же легко, как я смог.

0 голосов
/ 19 декабря 2010

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

...