2009-04-23 4 views
22

Этот вопрос является производным от предыдущего вопроса: How to version resources that are shared across projectsКак расшириться и слиться в TFS

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

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

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

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

ответ

17

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

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

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

2

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

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

+0

Исправления: * Новые добавленные файлы не имеют отношения слияния с другими ветвями, пока они сами не разветвятся = ИСТИНА. (примечание: может быть «ветвь, удаление») * Обходной путь заключается в объединении определенного файла = FALSE. Не получится. Правильный ответ - объединить родителя, у которого есть отношения. * Файлы, добавленные в обе ветви параллельно, не будут сливаться = ФИКСИРОВАН В 2008 г. См. # 1-2 от http://blogs.msdn.com/tfsvcs/archive/2007/05/22/orcas-merge-enhancements. aspx - но обратите внимание, что если содержимое не совпадает, вы застряли в конфликте версии, у которого нет «базовой» информации; слияние будет болью. –