Команда слияния (система управления версиями Team Foundation)

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Команда tf merge применяет изменения из одной ветви в другую в система управления версиями Team Foundation (TFVC).

Примечание.

Результаты этой команды не отражаются на сервере Azure DevOps, пока не будет выполнена операция проверка. Дополнительные сведения см. в разделе "Разработка кода" и управление ожидающих изменений.

Необходимые компоненты

Чтобы использовать merge команду, у вас должен быть набор разрешений на получение разрешения для папки рабочей области, содержащей destinationпапку, содержащую этот объект, и у вас должен быть набор разрешений на чтение для папки рабочей области, содержащей папку sourceрабочей области. Дополнительные сведения см. в разделе "Разрешения TFVC по умолчанию".

Синтаксис

tf merge [/recursive] [/force] [/candidate] [/discard] 
[/version:versionspec] [/lock:none|checkin|checkout] [/preview] 
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination

Параметры

Аргументы

Argument

Description

<versionspec>

Предоставляет значение, например C2 для /version параметра. Дополнительные сведения о том, как TFVC анализирует спецификацию версии, чтобы определить, какие элементы находятся в область, см. в разделе "Использование команд управления версиями Team Foundation".

<source>

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

<destination>

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

<username>

Предоставляет значение /login для параметра. Можно указать username значение как DOMAIN\username или username.

Параметры

Параметр

Description

/recursive

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

/force

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

/candidate

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

/discard

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

/version

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

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

/lock

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

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

  • None: не помещает блокировку на элемент и удаляет из него существующую блокировку.

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

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

/preview

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

/baseless

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

Примечание.

Бессерверные слияния не могут удалять файлы в целевом объекте. Вы можете вручную перенести такие изменения.

/noimplicitbaseless

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

/nosummary

Сводка конфликтов, ошибок и предупреждений.

/noprompt

Подавляет любые запросы на входные данные.

/conservative

Приводит к большему конфликту при слиянии одной ветви с другой.

/format

Задает форматы суммирования конфликт слияния:

  • Brief (по умолчанию): суммирует только общее количество конфликтов, предупреждений и ошибок.
  • Detailed: суммирует не только общее количество конфликтов, предупреждений и ошибок, но и содержит сведения о каждом конфликте.

Примечание.

Этот параметр применяется только в том случае, если выходные данные содержат сводку конфликтов. Сводка не может отображаться, если /nosummary используется параметр или слияние вызвало менее 10 конфликтов, предупреждений и ошибок.

/login

Указывает имя пользователя и пароль для проверки подлинности пользователя с помощью Azure DevOps.

Замечания

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

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

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

Бессерверное слияние

Используйте бессерверное слияние для слияния элементов, которые не являются напрямую ветвлениями друг от друга. Чтобы выполнить бессерверное слияние, необходимо использовать tf merge команду. При выполнении бессерверного слияния TFVC не содержит никаких сведений о связи файлов в ветвях. В бессерверном слиянии необходимо выполнить ручное разрешение конфликтов. После выполнения бессерверного слияния и разрешения любых конфликтов TFVC записывает журнал слияния и устанавливает связь между папками и файлами.

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

При выполнении tf merge с набором /noimplicitbaseless параметров при попытке объединения двух ветвей два файла a.txt создают конфликт пространства имен при попытке проверка изменений. Чтобы устранить конфликт, необходимо переименовать один из файлов.

Примеры

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

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

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

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

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

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

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

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

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

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

Следующий пример dis карта s changeset 137 в качестве кандидата для объединения в branch2.

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

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

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