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

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

Visual Studio 2019 | Visual Studio 2022

Você pode usar o comando tf rollback do TFVC (Controle de Versão do Team Foundation) para reverter os efeitos de um ou mais conjuntos de alterações em um ou mais itens controlados por versão. Esse comando não remove os conjuntos de alterações do histórico de versão de um item. Em vez disso, esse comando cria um conjunto de alterações pendentes em seu workspace que negam os efeitos dos conjuntos de alterações especificados.

Pré-requisitos

Para usar esse comando, você deve ter as permissões de Leitura, Check-oute Check-in definidas como Permitir. Para saber mais, confira Permissões padrão do TFVC.

Sintaxe

tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]
tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]

Parâmetros

Argumentos

Argument

Descrição

<ChangesetFrom>~<ChangesetTo>

Use esse argumento com a opção /changeset para especificar os conjuntos de alterações que você deseja reverter. Você pode especificar os conjuntos de alterações das seguintes maneiras:

  • Um único conjunto de alterações, por exemplo /changeset:C11
  • Um intervalo de conjuntos de alterações, por exemplo /changeset:C7~C20
  • Uma data, por exemplo /changeset:D09/30/09
  • Um intervalo de datas, por exemplo /changeset:D09/23/09~D10/07/09
  • O conjunto de alterações mais recente,/changeset:Tip ou /changeset:T

<ItemSpec>

Use esse argumento para especificar um ou mais itens que você deseja reverter. Se você usar a opção /toversion, deverá especificar esse argumento.

Para obter mais informações sobre como o TFVC analisa as especificações de item, consulte Usar Comandos de Controle de Versão do Team Foundation.

Observação

Você pode especificar mais de um argumento itemspec.

<VersionSpec>

O valor fornecido pelo usuário para a opção /version e a opção /toversion.

Use esse argumento com a opção /toversion de reverter um arquivo para seu estado em um conjunto de alterações específico. Você pode especificar essa expressão das seguintes maneiras:

  • Um único conjunto de alterações, por exemplo /toversion:C32
  • Uma data à meia-noite, por exemplo /toversion:D06/19/09
  • Uma data e uma hora, por exemplo /toversion:D06/19/09T14:32
  • Um rótulo, por exemplo /toversion:LTestLabel
  • A versão no workspace mapeada para o diretório atual, /toversion:W
  • A versão em um workspace específico, por exemplo /toversion:WResolveRIConflicts;AKerry

Para obter mais informações sobre como o TFVC analisa os versionspeccomandos decontrole de versão do Team Foundation.

Opções

Opção

Descrição

/changeset

Use essa opção para especificar um ou mais conjuntos de alterações específicos que você deseja negar.

/keepmergehistory

Essa opção só terá efeito se um ou mais dos conjuntos de alterações que você está revertendo incluírem uma alteração de ramificação ou mesclagem. Especifique essa opção se quiser que mesclagens futuras entre a mesma origem e o mesmo destino excluam as alterações que você está revertendo.

/lock

Especifique essa opção para impedir que outros usuários faça check-in ou check-out de itens até que você termine de reverter todas as alterações associadas. Para obter mais informações, consulte Noções básicas sobre tipos de bloqueio.

Opções de bloqueio:

  • None. Padrão. Nenhum bloqueio é aplicado. Se o arquivo que você está revertendo tiver sido bloqueado, essa opção removerá o bloqueio.
  • Checkin. Bloqueia um item até liberar o bloqueio executando um check-in. Outros usuários podem fazer check-out do item especificado, mas os usuários não podem fazer check-in de revisões até que o bloqueio seja removido. Não é possível bloquear um arquivo que já esteja bloqueado.
  • Checkout. Impede que os usuários façam check-in ou faça check-out de um item bloqueado até que você remova o bloqueio fazendo um check-in.

/login

Para obter informações sobre essa opção, consulte Usar opções para modificar como um comando funciona.

/noprompt

Use essa opção para suprimir todas as caixas de diálogo que, de outra forma, apareceriam durante essa operação.

/recursive

Especifique essa opção se quiser que a operação inclua itens em subpastas.

/toversion

Especifique essa opção para reverter um arquivo ao seu estado em um conjunto de alterações específico. Ao usar essa opção, você nega o efeito de todos os conjuntos de alterações que foram aplicados desde a versão especificada.

/version

Especifica a versão atual dos arquivos e pastas que você deseja reverter.

Comentários

O comando tf rollback nega o efeito de cada conjunto de alterações especificado para cada item especificado. A tabela a seguir lista como a operação nega cada tipo de alteração.

Tipo de alteração revertida Tipo de alteração de reversão
adicionar, ramificar ou cancelar exclusão delete
edit edit
encoding encoding
rename/move rename/move
delete undelete
merge Alteração que nega as alterações mescladas no ramificação atual.

A lista a seguir fornece alguns exemplos de alterações resultantes do comando rollback:

  • Você reverte um conjunto de alterações no qual ocorreu uma alteração de adição . A operação de reversão causa uma alteração de reversão e uma alteração de exclusão.

  • Você reverte o conjunto de alterações 521 no qual ocorreu uma alteração de edição. A operação de reversão causa uma alteração dereversão e uma alteração de edição que nega a alteração de edição no conjunto de alterações 521.

  • No conjunto de alterações 132, você mesclou do $/BranchA/File1.txt para $/BranchB/File1.txt. As alterações nessa mesclagem incluíram alterações de edição nos conjuntos de alterações 92 e 104. No conjunto de alterações 162, você reverte o conjunto de alterações 132, o que resulta em uma alteração de reversão e uma alteração de edição para $/BranchB/File1.txt que nega as alterações de edição nos conjuntos de alterações 92 e 104.

Códigos de saída

Um código de saída da tabela a seguir aparece depois que você executa o comando tf rollback.

Código de saída Descrição
0 A operação reverteu todos os itens com êxito.
1 A operação reverteu pelo menos um item com êxito, mas não pôde reverter um ou mais itens.
100 A operação não pôde reverter nenhum item.

Exemplos

O exemplo a seguir nega o efeito do conjunto de alterações 23 em todos os itens que foram alterados nesse conjunto de alterações:

c:\workspace> tf rollback /changeset:C23

O exemplo a seguir nega o efeito do conjunto de alterações 23 no arquivo a.txt:

c:\workspace> tf rollback /changeset:C23 a.txt

O exemplo a seguir altera o conteúdo de a.txt para corresponder à versão que foi verificada com o conjunto de alterações 23:

c:\workspace> tf rollback /toversion:C23 a.txt

O exemplo a seguir altera o conteúdo de OurTeamProject para corresponder ao último conjunto de alterações aplicado à meia-noite de 31 de agosto de 2009:

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

Opção de exemplo /keepmergehistory

Ao reverter um conjunto de alterações que incluiu um ramificação ou uma alteração de mesclagem, você geralmente deseja que mesclagens futuras entre a mesma origem e o mesmo destino incluam essas alterações. No entanto, você pode usar a opção /keepmergehistory se quiser mesclagens futuras entre a mesma origem e o mesmo destino para excluir conjuntos de alterações que foram englobados em uma operação de mesclagem anterior. Por exemplo:

  1. Em 30 de junho de 2009, você faz uma mesclagem completa de todos os itens de $/BranchA/ para $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    

    Você marcar nesta mesclagem como parte do conjunto de alterações 292.

  2. Em julho, você faz várias alterações $/BranchA/Util.cs. Essas alterações são englobadas nos conjuntos de alterações 297, 301 e 305.

  3. Em 1º de agosto de 2009, você mescla$/BranchA/Util.cs ao $/BranchB/Util.cs.

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    Você faz check-in da alteração como parte do conjunto de alterações 314. O resultado dessa operação é que as edições feitas nos conjuntos de alterações 297, 301 e 305 para $/BranchA/Util.cs agora também são aplicadas a $/BranchB/Util.cs.

  4. Uma semana depois, você percebe que as edições feitas em $/BranchA/Util.cs em julho não são apropriadas para $/BranchB/Util.cs. Você pode usar o comando rollback para negar essas alterações. Ao usar o comando rollback para reverter uma alteração de mesclagem ou uma alteração de ramificação, você tem uma decisão a tomar.

    • Se você quiser que as alterações feitas em $/BranchA/Util.cs em julho sejam aplicadas novamente a $/BranchB/Util.cs em mesclagens futuras, insira o seguinte comando:

      c:\workspace> tf rollback /changeset:314
      
    • Se você quiser que as alterações feitas em $/BranchA/Util.cs em julho nunca sejam aplicadas novamente a $/BranchB/Util.cs em mesclagens futuras, insira o seguinte comando:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Algumas semanas depois, você mescla $/BranchA/ em $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Se você omitiu a opção /keepmergehistory quando reverteu, a alteração de mesclagem se aplica a $/BranchB/Util.cs todos os conjuntos de alterações que foram aplicados a $/BranchA/Util.cs desde o conjunto de alterações 292, incluindo os conjuntos de alterações 297, 301 e 305. Em outras palavras, a mesclagem desfaz a alteração de reversão.

    • Se você incluiu a opção /keepmergehistory quando reverteu, a operação de mesclagem se aplica a $/BranchB/Util.cs todos os conjuntos de alterações que foram aplicados a $/BranchA/Util.cs desde o conjunto de alterações 292, excluindo os conjuntos de alterações 297, 301 e 305. Em outras palavras, a mesclagem não desfaz a alteração de reversão. Portanto, o conteúdo no BranchA pode não corresponder ao conteúdo no BranchB.