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


Команда "merge"

Обновлен: Ноябрь 2007

Команда merge применяет изменения одной ветви в другую.

bd6dxhfy.alert_note(ru-ru,VS.90).gifПримечание.

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

Необходимые разрешения

Для использования команды merge необходимо задать для разрешения Извлечение значение Разрешить для папки рабочей области, содержащей целевой объект операции слияния. Кроме того, необходимо задать для разрешения Чтение значение Разрешить для папки рабочей области, содержащей источник. Дополнительные сведения см. в разделе Разрешения Team Foundation Server.

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] source destination

Параметры

Аргумент

Описание

versionspec

Задает значение, например C2, для параметра /version. Дополнительные сведения об анализе спецификаций версий сервером Team Foundation для определения элементов, которые находятся в области его действия, см. в разделе Синтаксис командной строки (Team System).

source

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

Destination

Указывает файл или папку, которая является целевым объектом операции слияния.

Параметр

Описание

/recursive

Выполняет поиск спецификации элемента source в текущем каталоге и вложенных папках.

/force

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

/candidate

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

/discard

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

/version

Для выборочного слияния этот параметр задает диапазон, который следует объединить в целевом объекте. Для подхватывающего слияния этот параметр указывает версию, до которой необходимо объединить все необъединенные изменения.

При выборочном слиянии диапазон версий представляет начальную и конечную точки объединяемого набора изменений. Например, при слиянии версий с 4 по 6 объединяются наборы изменений 4, 5 и 6.

/lock

Указывает тип блокировки или снимает ее с элемента. Дополнительные сведения см. в разделе Основные сведения о типах блокировки.

Параметры блокировки

  • None

    Блокировка не применяется и выполняется удаление существующей блокировки с элемента.

  • Checkin

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

  • Checkout

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

/preview

Отображает предварительный результат слияния.

/baseless

Выполняет слияние без базовой версии. То есть позволяет пользователям объединять файлы и папки, не имеющие отношения слияния. После выполнения слияния без базовой версии появляется отношение слияния, и последующие объединения уже происходят на основе базовой версии.

/nosummary

Пропускает сводку сообщений об ошибках и предупреждений, если в результате будет отображено больше 10 строк выходных данных.

/noimplicitbaseless

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

/noprompt

Отключает отображение запросов на ввод данных пользователем.

Заметки

Для применения изменений в существующей исходной ветви к существующей конечной ветви используется команда merge программы командной строки tf. В конечную ветвь можно выполнить слияние отдельного изменения или всего набора изменений. Можно объединить изменения из исходной ветви в конечную или наоборот.

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

Дополнительные сведения о поиске программы командной строки if см. в разделе Команды служебной программы командной строки "tf".

Слияние без базовой версии

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

При выполнении команды tfmerge Team Foundation выполняет неявное слияние без базовой версии между двумя элементами с одинаковыми относительными именами в двух ранее связанных деревьях системы управления версиями. Например, может потребоваться выполнить слияние ветвей $SRC\ и $TGT. Обе ветви содержат несвязанные между собой файлы с одинаковым именем a.txt. При выполнении команды tf merge Team Foundation устанавливает отношение между двумя файлами a.txt, если файлы идентичны, если отключено FIPS-совместимое шифрование и если исходный файл не связан с каким-либо другим файлом в целевом местоположении.

Если выполняется команда tf merge с параметром /noimplicitbaseless, когда Team Foundation пытается объединить две ветви, два файла a.txt приведут к конфликту пространства имен при попытке возврата изменений. Для устранения конфликта необходимо переименовать один из этих файлов.

Примеры

В следующем примере выполняется объединение изменений из файла "MyFile_beta1", которые не были объединены в файл "MyFile_RTM".

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

В следующем примере в ветвь branch2 добавляются изменения только из набора изменений 137.

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

В следующем примере в ветвь branch1 добавляются все наборы изменений, от первого до C137 включительно.

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

В следующем примере выполняется слияние всех изменений из наборов изменений от 100 до 137 включительно.

c:\projects>tf merge /version:C100~137 branch1 branch2 /recursive

В следующем примере выполняется печать списка наборов изменений в ветви1 (branch1), которые не были объединены в ветвь2 (branch2).

c:\projects>tf merge /candidate branch1 branch2 /recursive

В следующем примере выполняется печать списка наборов изменений в ветви2 (branch2), которые не были объединены обратно в ветвь1 (branch1).

c:\projects>tf merge /candidate branch2 branch1 /recursive

В следующем примере набор изменений 137 не учитывается как кандидат для объединения в ветвь2 (branch2).

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive

См. также

Задачи

Пошаговое руководство. Дополнительные функциональные возможности системы управления версиями

Практическое руководство. Разрешение конфликтов между двумя файлами

Основные понятия

Основные сведения о ветвлении

Ссылки

Синтаксис командной строки (Team System)

Команда "branch"

Команда "merges"

Другие ресурсы

Команды служебной программы командной строки "tf"