Поделиться через


Разрешение конфликтов Team Foundation (подсистема контроля версий)

Преимущество использования Team Foundation (подсистема контроля версий) для управления файлами состоит в том, что несколько человек могут одновременно работать над файлом. Один недостаток заключается в том, что иногда необходимо устранить конфликты, прежде чем можно будет получить, возвратить, восстановить из набора изменений, слить или откатить файлы.

Хотя сталкиваться с конфликтами достаточно неприятно, система предоставляет сведения и средства, помогающие понять и разрешить конфликты.

  • Разрешение конфликтов

  • Автоматическое разрешение всех конфликтов

  • Автообъединение отдельного конфликта

  • Разрешение отдельного конфликта вручную

  • Автоматические функции

  • Работа из командной строки

  • Получение советов

Разрешение конфликтов

Для разрешения блокирующих конфликтов используйте окно "Разрешение конфликтов".

Конфликтующие изменения блокируют возврат

Окно разрешения конфликтов

По умолчанию в окне отображаются только конфликты, вызванные последней по времени попыткой выполнения операции. При таком состоянии окна выводится сообщение, начинающееся со слов: Применен фильтр пути. Чтобы отобразить все конфликты в рабочей области, выберите Получить все конфликты. Появляется сообщение, которое начинается со слов: n конфликтов.

Если после внесения изменений в файлы рабочей области прошло много времени, возможно, произошли новые конфликты. Чтобы обновить окно Разрешение конфликтов, выберите Обновить.

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

  • Кнопка журнала Журнал, чтобы просмотреть историю изменений файла. Если конфликт вызван операцией объединения или отката, можно выбрать управления меню справа от кнопки Журнал, а затем выбрать Исходный журнал или Конечный журнал.

    См. раздел Получение истории элемента.

  • Кнопка добавления заметки Заметки, чтобы просмотреть подробные сведения обо всех изменениях, внесенных в последнюю по времени версию файла, включая информацию о том, кто и когда внес каждое изменение, См. раздел Просмотр изменений файлов с помощью заметок.

  • Кнопка сравнения файла Сравнить (или меню справа от кнопки и затем выберите команду). Появится окно Различия.

Автоматическое разрешение всех конфликтов

По умолчанию система автоматически пытается выполнить Авторазрешение всех конфликтов, если эта функция не отключена (см. Советы). В окне "Разрешение конфликтов" можно также вручную выбрать Авторазрешение всех, а затем выбрать один из следующих вариантов:

  • Если требуется, чтобы система попыталась разрешить конфликты с применением всех эвристических правил, выберите Все типы конфликтов.

  • Если требуется, чтобы система попыталась разрешить конфликты, но желательно исключить часть эвристических правил, выберите Конкретные типы конфликтов.

    Отобразится диалоговое окно Выбор конфликтов для разрешения. Установите или снимите флажки, чтобы включить или отключить те или иные функции, и выберите Авторазрешение. Дополнительные сведения см. в подразделе Автоматические функции ниже.

Система попытается автоматически разрешить конфликты, отображенные в окне "Ожидающие изменения". Все конфликты, которые системе не удалось разрешить, останутся в окне. Эти конфликты необходимо разрешить вручную.

Автообъединение одного конфликта

Выберите Автообъединение, чтобы попытаться разрешить выбранные конфликты, используя все функции автообъединения, описанные в подразделе Автоматические функции ниже.

Совет

Для выбора нескольких конфликтов нажмите и удерживайте клавишу CTRL или SHIFT.

Примечание

Если функция Автообъединение отключена, то этот конфликт необходимо разрешить вручную.

Разрешение одного конфликта вручную

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

Объединение изменений в средстве слияния

Если конфликт вызван противоречивыми изменениями содержимого, можно Объединить изменения в средстве слияния.

При выборе этого действия отображается окно "Слияние".

Окно слияния

Результаты работы по разрешению конфликта отображаются в области Результаты.

В этом окне можно:

  • Выбрать макет окна: Вертикальное представление, Горизонтальное представление, Смешанное представление.

  • Осуществлять навигацию между различиями и конфликтами.

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

  • Вводить дополнительное содержимое в файл в области "Результат".

  • Просмотреть журнал файла. См. раздел Получение истории элемента.

  • Сравнить различные версии файла.

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

Если вы удовлетворены содержимым области Результат, выберите Принять слияние.

Автоматические функции

В особых случаях может потребоваться ограничить типы конфликтов, автоматически разрешаемых функцией Авторазрешение всех.

Если выбрать Авторазрешение всех и затем Конкретные типы конфликтов, откроется диалоговое окно Выбор конфликтов для разрешения.

Диалоговое окно "Выбор конфликтов для разрешения"

Причины конфликтов, которые должны автоматически устраняться системой

Пример

Флажок, который нужно установить

В каждую из версий файла внесены неконфликтующие изменения содержимого

В начало расположенной слева версии файла добавлено слово нуль. В конец файла, расположенного справа, добавлено слово три.

Неконфликтующие изменения содержимого

Конфликтует с любыми изменениями содержимого

В содержимое внесены изменения, уникальные для рабочей области (в ходе операции получения или возврата) или целевой версии (в ходе операции слияния или отката)

В рабочую область или целевую версию добавлены слова четыре и пять.

Изменения содержимого, уникальные для рабочей области или целевой версии

Конфликтует с изменениями содержимого, сделанными только в локальной рабочей области или целевой ветви

В содержимое внесены изменения, уникальные для сервера (в ходе операции получения или возврата) или исходной версии (в ходе операции слияния или отката)

На сервер или в исходную версию добавлены слова четыре и пять.

Изменения содержимого, уникальные для сервера или исходной версии

Конфликтует с изменениями содержимого, сделанными только в серверной версии или исходной ветви

Был переименован файл на сервере (в ходе операции получения или возврата) или в исходной ветви (в ходе операции слияния или отката)

Пользователь извлек файл с именем launch.cs и внес в него изменения. В это время кто-то вернул набор изменений, затронувший тот же файл. Этот набор изменений не изменил содержимое файла, но привел к его переименованию в start.cs.

Конфликты, послужившие результатом переименования файла в серверной версии или исходной ветви

  • В содержимое внесены общие изменения, которые привели к идентичности содержимого каждой версии

  • Файл был изменен и возвращен посредством сборки с условным возвратом, а также был выбран параметр Сохранить ожидающие изменения локально

Изменения каждой из версий привели к идентичности содержимого файлов. Изменения могут затрагивать содержимое файлов, как показано в следующем примере.

Одинаковые изменения содержимого в каждой версии

Эта функция также автоматически разрешает конфликты, вызванные всеми остальными операциями (например, сменой имени, удалением, отменой удаления и ветвлением), и в результате ее использования получаются идентичные файлы.

Совет

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

Конфликты в результате идентичных изменений на сервере и в рабочей области

Работа из командной строки

Советы

  • СоветПо умолчанию система автоматически пытается выполнить Авторазрешение всех конфликтов. Чтобы отключить эту функцию, в строке меню выберите Сервис, Параметры, затем в диалоговом окне Параметры перейдите к узлу Система управления версиями, Visual Studio Team Foundation Server. Снимите флажок Пытаться автоматически разрешать конфликты.

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