Как разветвляться и объединяться в TFS

Этот вопрос является производным от предыдущего вопроса: Как управлять версиями ресурсов, которые используются в проектах

У меня есть проект, содержащий код, который используется многими другими проектами. В частности, одна папка в этом родительском проекте была разветвлена ​​на зависимые дочерние проекты.

С тех пор мы внесли изменения в родительский проект и зарегистрировали их. В проводнике управления исходным кодом я щелкаю правой кнопкой мыши разветвленную папку в родительском проекте и выбираю «Объединить», намереваясь передать изменения в зависимый проект. Я выбираю дочерний проект в качестве места назначения, а затем выбираю «Последняя версия». Мастер сообщает мне: «Нет изменений для слияния».

С моей точки зрения, это неправда, так как недавно обновленные файлы явно отличаются.

Есть ли здесь фундаментальное непонимание процесса слияния в TFS? Что мне нужно сделать по-другому?


person betitall    schedule 23.04.2009    source источник


Ответы (2)


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

Первый шаг — понять диагностические команды tf history, tf merges и tf merge /candidate. Вот хорошее введение: http://blogs.msdn.com/dstfs/archive/2009/04/15/a-note-on-merging-and-the-use-of-tf-merges-tf-merge.aspx

Если вы новичок в ветвлении и слиянии в TFS, то ваша история, вероятно, не очень сложна. Я думаю, скорее всего, вы найдете ответ одним быстрым вызовом tf merges. Однако отслеживание истории слияний в общем случае может стать чрезвычайно запутанным, поэтому, если у вас возникнут проблемы, не стесняйтесь опубликовать более подробную информацию.

person Richard Berg    schedule 11.06.2009

Перейдите к одному конкретному файлу, который, как вы знаете, изменился в вашем «родительском» проекте. Попробуйте объединить только этот файл. Ничего не регистрируйте; просто посмотреть, что происходит.

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

person Robert Lewis    schedule 24.04.2009
comment
Исправления: * Недавно добавленные файлы не имеют отношений слияния с другими ветвями, пока они сами не станут разветвленными = TRUE. (примечание: может быть веткой, удалить) * Обходной путь - слить конкретный файл = FALSE. Не сработает. Правильный ответ - объединить родителя, у которого есть отношения. * Файлы, добавляемые в обе ветки параллельно, не объединяются = ИСПРАВЛЕНО В 2008 ГОДУ. См. № 1-2 из blogs.msdn.com/tfsvcs/archive/2007/05/22/ — но обратите внимание, что если содержимое не совпадает, вы застряли с конфликт версий, у которых нет базовой информации; слияние будет болью. - person Richard Berg; 12.06.2009