Опубликован: 25.03.2010 | Уровень: специалист | Доступ: платный
Дополнительный материал 4:

Практикум

Как выполнить слияние без основы в Visual Studio Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual Studio Team System (VSTS) .

Описание

В этой статье подробно разбирается процесс слияния двух ветвей, которые никак не связаны друг с другом. Процесс слияния элементов, не являющихся непосредственными ответвлениями друг друга, называется слиянием без общей основы ( baseless nerge ). Выполняется такое слияние с помощью команды Tf merge. Осуществить слияния без основы из интерфейса Visual Studio невозможно.

Содержание

  • Задачи.
  • Обзор.
  • Порядок операций.
  • Шаг 1 - оценка необходимости выполнения слияния без основы.
  • Шаг 2 - выполнение слияния без основы с использованием Tf.exe.
  • Шаг 3 - разрешение конфликтов, возникших при слиянии.
  • Шаг 4 - возврат изменений, внесенных в результате слияния, в систему управления исходным кодом.
  • Дополнительные ресурсы.

Задачи

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

Обзор

Процесс слияния элементов, не являющихся непосредственными ответвлениями друг друга, называется слиянием без основы. Примером такого слияния может быть перенос изменений между двумя ветвями выпускаемых версий, являющимися ветвями одного уровня, без переноса изменений в родительскую ветвь. Слияние без основы может выполняться только посредством команды Tf merge. Его невозможно выполнить из интерфейса Visual Studio.

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

Порядок операций

  • Шаг 1 - оценка необходимости выполнения слияния без основы.
  • Шаг 2 - выполнение слияния без основы с использованием Tf.exe.
  • Шаг 3 - разрешение конфликтов, возникших при слиянии.
  • Шаг 4 - возврат изменений, внесенных в результате слияния, в систему управления исходным кодом.

Шаг 1 - оценка необходимости выполнения слияния без основы

На данном этапе рассматриваются ветви и элементы, подлежащие слиянию, и принимается решение о том, следует ли выполнять слияние без основы или можно обойтись обычным слиянием.

Если вы являетесь владельцем или администратором командного проекта, отношения между ветвями или элементами вам известны. Из Visual Studio можно выполнять слияние только тех ветвей, между которыми установлено отношение "родитель-потомок". Если в проекте имеются ветви или элементы, между которыми нет таких отношений, придется выполнять слияние без основы.

Если вам не известны отношения между ветвями или элементами, необходимость в выполнении слияния без основы можно установить следующим образом:

  1. Откройте Source Code Explorer.
  2. Щелкните правой кнопкой мыши папку ветви и щелкните Merge.
  3. В диалоговом окне Source Control Merge Wizard щелкните раскрывающийся список Target branch. Отсутствие в этом списке ветви, для которой вы хотите выполнять слияние, указывает, что между данными ветвями нет отношения слияния. В этом случае необходимо выполнять слияние без основы.

Шаг 2 - выполнение слияния без основы с использованием Tf.exe

Чтобы выполнить слияние без основы с помощью инструмента командной строки Tf.exe, выполните следующие действия:

  1. Подготовьте рабочую область, выполнив операцию Get Latest для подлежащих слиянию ветвей:
    • Откройте Source Code Explorer.
    • Щелкните правой кнопкой мыши папку первой ветви, участвующей в слиянии, и выберите команду Get Latest Version.
    • Повторите это действие для второй ветви, участвующей в слиянии.

    Если сопоставление рабочей области не задано, Visual Studio предложит выбрать папку на локальном диске

    .
  2. Откройте окно командной строки Visual Studio.
  3. Введите в окне командной строки следующую команду:

    Tf merge /baseless <исходный путь> <целевой путь> /recursive

    Например:

    Tf merge /baseless c:\data\proj1 c:\data proj2 /recursive

    Если необходимо выполнить слияние конкретных версий изменений, используйте параметр /version:

    tf merge /baseless <исходный путь> 
      <целевой путь> / recursive / version:
       < набор изменений, из которого переносятся изменения>~
         <набор изменений, в который переносятся изменения>

    Например:

    tf merge /baseless c:\data\proj1 c:\data\proj2 /recursive /version: C123~C125

Шаг 3 - разрешение конфликтов, возникших при слиянии

При слиянии без основы часто возникают конфликты. После выполнения команды Tf.exe на экран выводится диалоговое окно Resolve Conflicts со списком файлов, в которых возникли конфликты.

  1. Выберите все файлы и щелкните Resolve.
  2. В диалоговом окне Resolve version conflict выполните следующие действия:
    • Если содержимое файлов не изменялось, выберите параметр Keep changes in the target branch и щелкните OK.
    • Если содержимое файлов изменялось, выберите параметр Merge changes in merge tool и щелкните OK.
  3. В инструменте слияния выбирайте конфликтные области в верхнем окне или вводите изменения в нижнем окне, обрабатывая таким образом каждую из строк, в которых возникли конфликты.
  4. Разрешив все конфликты, щелкните OK в инструменте слияния.
  5. Щелкните Close.

Шаг 4 - возврат изменений, внесенных в результате слияния, в систему управления исходным кодом

На этом этапе изменения, внесенные в результате слияния без основы, возвращаются в систему управления исходным кодом.

  1. Откройте Source Code Explorer.
  2. Щелкните правой кнопкой целевую папку, в которую были перенесены изменения, и выберите команду Check-in pending changes.
  3. В диалоговом окне Check-In Source Files выделите все файлы, которые подлежат возврату.
  4. Щелкните Check In.

Дополнительные ресурсы

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Александр Медов
Александр Медов

Здравствуйте, какова полная сумма предоставленной услуги с печатью документа и отправкой по почте?

Евгений Летенков
Евгений Летенков
Россия, Москва, РУДН, 2005
Алексей Корзинин
Алексей Корзинин
Россия