Как разветвляться и объединяться в TFS - PullRequest
23 голосов
/ 24 апреля 2009

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

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

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

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

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

Ответы [ 2 ]

17 голосов
/ 12 июня 2009

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

Первый шаг - понять диагностические команды tf history, tf merges и tf merge /андидат . Вот хорошее введение: 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 . Тем не менее, отслеживание истории слияний может стать чрезвычайно запутанным в общем случае, поэтому, если у вас есть проблемы, не стесняйтесь отправлять сообщения с более подробной информацией.

2 голосов
/ 24 апреля 2009

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

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

...