Comando merge (Controle de Versão do Team Foundation)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

O comando tf merge aplica alterações de um branch em outro no TFVC (Controle de Versão do Team Foundation).

Observação

Os resultados desse comando não são refletidos no servidor do Azure DevOps até que você faça uma operação de check-in. Para saber mais, confira Desenvolver código e gerenciar alterações pendentes.

Pré-requisitos

Para usar o comando merge, é necessário ter a permissão Check-out definida como Permitir para a pasta do workspace que contém destination. Além disso, é preciso ter a permissão de Leitura definida como Permitir para a pasta do workspace que contém source. Para saber mais, consulte Permissões padrão do TFVC.

Sintaxe

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

Parâmetros

Argumentos

Argument

Descrição

<versionspec>

Fornece um valor, como C2, para a opção /version. Para obter mais informações sobre como o TFVC analisa a especificação de versão para determinar quais itens estão dentro do escopo, consulte Usar comandos do controle de versão do Team Foundation.

<source>

Especifica o arquivo ou pasta para atuar como a origem da mesclagem.

<destination>

Especifica o arquivo ou a pasta para atuar como o destino da mesclagem.

<username>

Mostra um valor para a opção /login. É possível especificar um valor username como DOMAIN\username ou username.

Opções

Opção

Descrição

/recursive

Corresponde à especificação do item source no diretório atual e em qualquer subpasta.

/force

Ignora o histórico de mesclagem e mescla as alterações especificadas da origem no destino, mesmo que algumas ou todas essas alterações tenham sido mescladas antes.

/candidate

Imprime uma lista de todos os conjuntos de alterações na origem que ainda não foram mesclados no destino. A lista deve incluir a ID do conjunto de alterações que não foi mesclada e outras informações básicas sobre esse conjunto de alterações. Um asterisco para um determinado resultado indica que ele foi parcialmente mesclado, o que significa que algumas das alterações no conjunto de alterações foram mescladas e outras não.

/discard

Não faz a operação de mesclagem, mas atualiza o histórico de mesclagem para indicar que ela ocorreu. Isso descarta que um conjunto de alterações seja usado para uma mesclagem específica.

/version

Para uma mesclagem seletiva, essa opção especifica o intervalo que deve ser mesclado no destino. Para uma mesclagem de atualização, esse parâmetro especifica a versão antes da qual todas as alterações não mescladas devem ser mescladas.

Para uma mesclagem seletiva, o intervalo de versão indica os pontos inicial e final do conjunto de alterações a serem mescladas. Por exemplo, se você tentar mesclar a versão 4~6, os conjuntos de alterações 4, 5 e 6 serão mesclados.

/lock

Especifica um tipo de bloqueio ou remove um bloqueio de um item. Para obter mais informações, consulte Noções básicas sobre tipos de bloqueio.

Opções de bloqueio:

  • None: Não coloca um bloqueio em um item e remove qualquer bloqueio existente do item.

  • Checkin: Outros usuários podem fazer check-out dos itens especificados, mas não podem fazer check-in de revisões para arquivos bloqueados até que você libere o bloqueio fazendo um check-in. Se outros usuários tiverem bloqueado qualquer um dos itens especificados, a operação de bloqueio falhará.

  • Checkout: Impede que outros usuários façam check-in ou check-out de qualquer um dos itens especificados até que você libere o bloqueio explicitamente. Se outros usuários tiverem bloquado qualquer um dos itens especificados ou se houver alterações pendentes em um dos itens, a operação de bloqueio falhará.

/preview

Mostra uma pré-visualização da mesclagem.

/baseless

Executa uma mesclagem sem uma versão base. Ou seja, permite que o usuário mescle arquivos e pastas que não têm uma relação de mesclagem. Depois de uma mesclagem sem base, existe uma relação de mesclagem, e mesclagens futuras não precisam ocorrer sem base.

Observação

Mesclagens sem base não podem excluir arquivos no destino. Você pode realizar essas alterações manualmente.

/noimplicitbaseless

Especifica que o TFVC não fará uma mesclagem sem base implícita entre dois itens que têm o mesmo nome relativo em duas árvores de controle de versão não relacionadas.

/nosummary

Omite o resumo de conflitos, erros e avisos.

/noprompt

Suprime quaisquer prompts de entrada.

/conservative

Resulta em mais conflitos quando você mescla um branch com outro.

/format

Especifica os formatos de resumo para os conflitos de mesclagem:

  • Brief (padrão): resume apenas o número total de conflitos, avisos e erros.
  • Detailed: resume não apenas o número total de conflitos, avisos e erros, mas também lista detalhes sobre cada conflito.

Observação

Essa opção se aplica somente quando a saída contém um resumo de conflitos. O resumo não poderá ser mostrado se a opção /nosummary for usada ou se a mesclagem tiver causado menos de dez conflitos, avisos e erros.

/login

Especifica o nome de usuário e a senha para autenticar o usuário no Azure DevOps.

Comentários

É possível usar o comando merge do utilitário de linha de comando tf para aplicar alterações em um branch de origem a um branch de destino. Você pode mesclar uma revisão individual ou um conjunto de alterações completo com o branch de destino. Você pode mesclar alterações da origem para o branch de destino ou do destino para o branch de origem.

O comando merge também permite consultar alterações em um branch de origem que não foram migradas para o branch de destino. O comando também permite indicar que determinadas alterações nunca serão mescladas da origem para o destino e não devem mais ser exibidas como candidatas a uma operação de mesclagem.

Para saber mais sobre como usar o utilitário de linha de comando tf, consulte Usar comandos do controle de versão do Team Foundation.

Mesclagem sem base

Use a mesclagem sem base para mesclar itens que não são ramificados diretamente uns dos outros. Para fazer uma mesclagem sem base, você deve usar o comando tf merge. Quando você faz uma mesclagem sem base, o TFVC não tem nenhuma informação sobre a relação dos arquivos nos branches. Em uma mesclagem sem base, você deve fazer resoluções manuais de conflitos. Depois de fazer a mesclagem sem base e resolver conflitos, o TFVC registra o histórico de mesclagem e estabelece uma relação entre as pastas e os arquivos.

Quando você executa tf merge, o TFVC faz uma mesclagem sem base implícita entre itens que têm o mesmo nome relativo em duas árvores com controle de versão anteriormente relacionadas. Por exemplo, talvez você queira mesclar os branches relacionados $SRC e $TGT. Ambos os branches contêm um arquivo não relacionado chamado a.txt. Quando você executa tf merge, o TFVC estabelece uma relação entre os dois arquivos a.txt se ambos forem iguais, a criptografia compatível com FIPS estiver desabilitada e o arquivo de origem não estiver relacionado a nenhum outro no destino.

Se você executar tf merge com a opção /noimplicitbaseless definida, quando o TFVC tentar mesclar os dois branches, ambos os arquivos a.txt criarão um conflito de namespace quando você tentar fazer check-in das alterações. Para resolver o conflito, renomeie um dos arquivos.

Exemplos

O exemplo a seguir mescla alterações de MyFile_beta1 que não foram mescladas em MyFile_RTM.

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

O exemplo a seguir mescla o conjunto de alterações 137 em branch2.

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

O exemplo a seguir mescla todos os conjuntos de alterações até o 137 em branch2.

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

O exemplo a seguir imprime uma lista dos conjuntos de alterações no branch1 que não foram mesclados no branch2.

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

O exemplo a seguir imprime uma lista dos conjuntos de alterações no branch2 que não foram mesclados de volta no branch1.

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

O exemplo a seguir descarta o conjunto de alterações 137 como um candidato para mesclagem em branch2.

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

O exemplo a seguir descarta todos os conjuntos de alterações até o 137 como candidatos para mesclagem em branch2.

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