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

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Você pode usar o comando Team Foundation Version Control (TFVC) tf rollback para reverter os efeitos de um ou mais conjuntos de alterações em um ou mais itens com controle de versão. Este comando não remove os conjuntos de alterações do histórico de versões de um item. Em vez disso, esse comando cria um conjunto de alterações pendentes em seu espaço de trabalho 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-out e Check-in definidas como Permitir. Para obter mais informações, consulte Permissões TFVC padrão.

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

Argumento

Descrição

<ChangesetFrom>~<ChangesetTo>

Use esse argumento com a /changeset opção 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
  • Uma série 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 /toversion opção, deverá especificar esse argumento.

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

Nota

Você pode especificar mais de um itemspec argumento.

<VersionSpec>

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

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

  • Um único conjunto de alterações, por exemplo /toversion:C32
  • Um encontro à 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 espaço de trabalho que é mapeada para o diretório atual, /toversion:W
  • A versão em um espaço de trabalho específico, por exemplo /toversion:WResolveRIConflicts;AKerry

Para obter mais informações sobre como o TFVC analisa o , consulte Usar comandos de controle de versão do versionspecTeam Foundation.

Opções

Opção

Descrição

/changeset

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

/keepmergehistory

Essa opção terá efeito somente 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 desejar que futuras mesclagens 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çam check-in ou check-out de itens até que você termine de reverter todas as alterações associadas. Para obter mais informações, consulte Compreender os tipos de bloqueio.

Opções de bloqueio:

  • None. Predefinição. Nenhum bloqueio é aplicado. Se o ficheiro que está a reverter tiver sido bloqueado, esta opção remove o bloqueio.
  • Checkin. Bloqueia um item até que você libere o bloqueio realizando um check-in. Outros usuários podem fazer check-out do item especificado, mas não podem fazer check-in de revisões até que o bloqueio seja removido. Não é possível bloquear um ficheiro que já esteja bloqueado.
  • Checkout. Impede que os usuários façam check-in ou 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 o funcionamento de um comando.

/noprompt

Use essa opção para suprimir quaisquer caixas de diálogo que apareceriam durante esta operação.

/recursive

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

/toversion

Especifique essa opção para reverter um arquivo para 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.

Observações

O tf rollback comando 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 a exclusão eliminar
editar editar
codificação codificação
Renomear/Mover Renomear/Mover
eliminar Cancelar exclusão
fundir Mudança que nega qualquer mudança incorporada ao ramo atual.

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

  • 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 de reversã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 de $/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 de executar o tf rollback comando.

Código de saída Description
0 A operação reverteu todos os itens com êxito.
1 A operação reverteu pelo menos um item com êxito, mas não conseguiu reverter um ou mais itens.
100 A operação não conseguiu 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 a.txt de arquivos:

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

O exemplo a seguir altera o conteúdo do a.txt para corresponder à versão que fez check-in 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 que foi aplicado em ou antes da meia-noite de 31 de agosto de 2009:

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

Exemplo de opção /keepmergehistory

Quando você reverte um conjunto de alterações que incluiu uma ramificação ou uma alteração de mesclagem, geralmente deseja que futuras mesclagens entre a mesma origem e o mesmo destino incluam essas alterações. No entanto, você pode usar a /keepmergehistory opção se quiser futuras mesclagens entre a mesma origem e o mesmo destino para excluir conjuntos de alterações que foram incluídos 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/ a $/BranchB/.

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

    Faça check-in desta mesclagem como parte do conjunto de alterações 292.

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

  3. Em 1º de agosto de 2009, você mescla $/BranchA/Util.cs para $/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 que você fez em $/BranchA/Util.cs em julho não são apropriadas para $/BranchB/Util.cs. Você pode usar o rollback comando para negar essas alterações. Quando você usa o rollback comando para reverter uma alteração de mesclagem ou uma alteração de ramificação , você tem uma decisão a tomar.

    • Se desejar que as alterações feitas em $/BranchA/Util.cs em julho sejam reaplicadas a $/BranchB/Util.cs em futuras mesclagens, digite o seguinte comando:

      c:\workspace> tf rollback /changeset:314
      
    • Se desejar que as alterações feitas em $/BranchA/Util.cs em julho nunca sejam reaplicadas a $/BranchB/Util.cs em futuras mesclagens, digite 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 /keepmergehistory opção quando reverteu, a alteração de mesclagem se aplicará 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 /keepmergehistory opção quando reverteu, a operação de mesclagem se aplicará 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.