Команда слияния (система управления версиями 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 merge
TFVC выполняет неявное бессерверное слияние между элементами с одинаковым относительным именем в двух ранее управляемых версиями деревьях. Например, может потребоваться объединить связанные ветви $SRC
и $TGT
. Обе ветви содержат несвязанный файл, который называется a.txt. При запуске tf merge
TFVC устанавливает связь между двумя 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