Commande Rollback (Team Foundation Version Control)

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

Visual Studio 2019 | Visual Studio 2022

Vous pouvez utiliser la commande Team Foundation Version Control (TFVC) tf rollback pour annuler les effets d’un ou de plusieurs ensembles de modifications sur un ou plusieurs éléments à version contrôlée. Cette commande ne supprime pas les ensembles de modifications de l’historique des versions d’un élément. Au lieu de cela, cette commande crée un ensemble de modifications en attente dans votre espace de travail qui annulent les effets des ensembles de modifications que vous définissez.

Prérequis

Pour utiliser cette commande, vous devez disposer des autorisations Lire, Extraire et Archiver définies sur Autoriser. Pour plus d’informations, consultez Autorisations TFVC par défaut.

Syntaxe

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]]

Paramètres

Arguments

Argument

Description

<ChangesetFrom>~<ChangesetTo>

Utilisez cet argument avec l’option /changeset pour définir les ensembles de modifications que vous souhaitez restaurer. Vous pouvez définir les valeurs des données de différentes manières :

  • Un seul ensemble de modifications, par exemple /changeset:C11
  • Une plage d’ensembles de modifications, par exemple /changeset:C7~C20
  • Une date, par exemple /changeset:D09/30/09
  • Plage de dates, par exemple /changeset:D09/23/09~D10/07/09
  • L’ensemble de modifications le plus récent, /changeset:Tip ou /changeset:T

<ItemSpec>

Utilisez cet argument pour définir un ou plusieurs éléments que vous souhaitez restaurer. Si vous utilisez l’option /toversion, vous devez définir cet argument.

Pour plus d’informations sur la façon dont TFVC analyse les spécifications des éléments, consultez Utiliser les commandes de gestion de version Team Foundation.

Notes

Vous pouvez définir plusieurs arguments itemspec.

<VersionSpec>

Valeur fournie par l’utilisateur pour l’option /version et l’option /toversion.

Utilisez cet argument avec l’option /toversion permettant de rétablir un fichier à son état dans un ensemble de modifications spécifique. Vous pouvez définir cette expression en procédant comme suit :

  • Un seul ensemble de modifications, par exemple /toversion:C32
  • Une date à minuit, par exemple /toversion:D06/19/09
  • Une date et une heure, par exemple /toversion:D06/19/09T14:32
  • Une étiquette, par exemple /toversion:LTestLabel
  • Version de l’espace de travail mappée au répertoire actif, /toversion:W
  • Version dans un espace de travail spécifique, par exemple /toversion:WResolveRIConflicts;AKerry

Pour plus d’informations sur la façon dont TFVC analyse versionspec, consultez Utiliser les commandes de gestion de version Team Foundation.

Options

Option

Description

/changeset

Utilisez cette option pour définir un ou plusieurs ensembles de modifications spécifiques que vous souhaitez annuler.

/keepmergehistory

Cette option n’a d’effet que si un ou plusieurs des ensembles de modifications que vous annulez incluent une modification de branche ou de fusion. Définissez cette option si vous souhaitez que des fusions ultérieures entre la même source et la même cible excluent les modifications que vous annulez.

/lock

Définissez cette option pour empêcher d’autres utilisateurs d’archiver ou d’extraire des éléments jusqu’à ce que vous terminiez la restauration de toutes les modifications associées. Pour plus d’informations, consultez Comprendre les types de verrouillages.

Options de verrouillage :

  • None. Par défaut. Aucun verrouillage n’est appliqué. Si le fichier dont vous effectuez la restauration a été verrouillé, cette option supprime le verrouillage.
  • Checkin. Verrouille un élément jusqu’à ce que vous l’enleviez en effectuant un archivage. D’autres utilisateurs peuvent extraire l’élément spécifié, mais ils ne peuvent pas archiver les révisions tant que le verrouillage n’a pas été supprimé. Vous ne pouvez pas verrouiller un fichier qui est déjà verrouillé.
  • Checkout. Empêche les utilisateurs d’archiver ou d’extraire un élément verrouillé jusqu’à ce que vous supprimiez le verrouillage en effectuant un archivage.

/login

Pour plus d’informations sur cette option, consultez Utiliser des options pour modifier le fonctionnement d’une commande.

/noprompt

Utilisez cette option pour supprimer toutes les boîtes de dialogue qui apparaîtraient au cours de cette opération.

/recursive

Définissez cette option si vous souhaitez que l’opération inclue des éléments dans les sous-dossiers.

/toversion

Définissez cette option pour rétablir l’état d’un fichier dans un ensemble de modifications spécifique. Lorsque vous utilisez cette option, vous annulez l’effet de tous les ensembles de modifications qui ont été appliqués depuis la version que vous définissez.

/version

Spécifie la version actuelle des fichiers et dossiers que vous souhaitez restaurer.

Notes

La commande tf rollback annule l’effet de chaque ensemble de modifications que vous définissez pour chaque élément que vous définissez. Le tableau suivant répertorie la façon dont l’opération annule chaque type de modification.

Type de modification restauré Type de modification de restauration
add, branch, ou undelete delete
edit edit
encoding encoding
rename/move rename/move
delete undelete
merge Modification qui annule les modifications fusionnées dans la branche actuelle.

La liste suivante fournit quelques exemples de modifications qui résultent de la commande rollback :

  • Vous restaurez un ensemble de modifications dans lequel une modification ajouter été effectuée. L’opération de restauration provoque une modification restaurer et une modification supprimer.

  • Vous restaurez l’ensemble de modifications 521 dans lequel une modification modifier s’est produite. L’opération de restauration provoque une modification restaurer et une modification modifier qui annule la modification modifier dans l’ensemble de modifications 521.

  • Dans l’ensemble de modifications 132, vous avez fusionné de $/BranchA/File1.txt à $/BranchB/File1.txt. Les modifications apportées à cette fusion incluent les modifications apportées aux ensembles de modifications 92 et 104. Dans l’ensemble de modifications 162, vous restaurez le jeu de modifications 132, ce qui entraîne une modification restaurer et une modification modifier de $/BranchB/File1.txt qui annule les modifications modifier dans les ensembles de modifications 92 et 104.

Codes de sortie

Un code de sortie du tableau suivant apparaît après l’exécution de la commande tf rollback.

Code de sortie Description
0 L’opération a restauré tous les éléments avec succès.
1 L’opération a restauré au moins un élément avec succès, mais n’a pas pu restaurer un ou plusieurs éléments.
100 L’opération n’a pu restaurer aucun élément.

Exemples

L’exemple suivant annule l’effet de l’ensemble de modifications 23 sur tous les éléments qui ont été modifiés dans cet ensemble de modifications :

c:\workspace> tf rollback /changeset:C23

L’exemple suivant annule l’effet du jeu de modifications 23 sur le fichier a.txt:

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

L’exemple suivant modifie le contenu de a.txt pour qu’il corresponde à la version archivée avec l’ensemble de modifications 23 :

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

L’exemple suivant modifie le contenu de OurTeamProject pour qu’il corresponde au dernier ensemble de modifications appliqué le 31 août 2009 à minuit ou avant :

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

Exemple d’option /keepmergehistory

Lorsque vous restaurez un ensemble de modifications incluant une branche ou une modification de fusion, vous souhaitez généralement que les fusions ultérieures entre la même source et la même cible incluent ces modifications. Toutefois, vous pouvez utiliser l’option /keepmergehistory si vous souhaitez des fusions ultérieures entre la même source et la même cible pour exclure les ensembles de modifications qui ont été inclus dans une ancienne opération de fusion. Par exemple :

  1. Le 30 juin 2009, vous effectuez une fusion complète de tous les éléments de $/BranchA/ à $/BranchB/.

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

    Vous archivez cette fusion dans le cadre de l’ensemble de modifications 292.

  2. En juillet, vous apportez plusieurs modifications $/BranchA/Util.cs. Ces modifications sont comprises dans les jeux de modifications 297, 301 et 305.

  3. Le 1er août 2009, vous fusionnez $/BranchA/Util.cs en $/BranchB/Util.cs.

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

    Vous archivez la modification dans le cadre de l’ensemble de modifications 314. Le résultat de cette opération est que les modifications que vous avez apportées dans les ensembles de modifications 297, 301 et 305 à $/BranchA/Util.cs sont désormais également appliquées à $/BranchB/Util.cs.

  4. Une semaine plus tard, vous réalisez que les modifications que vous avez apportées à $/BranchA/Util.cs en juillet ne sont pas appropriées pour $/BranchB/Util.cs. Vous pouvez utiliser la commande rollback pour nier ces modifications. Lorsque vous utilisez la commande rollback pour restaurer une modification de fusionner ou une modification de branche, vous avez une décision à prendre.

    • Si vous souhaitez que les modifications apportées à $/BranchA/Util.cs en juillet soient réappliquées à $/BranchB/Util.cs lors de fusions ultérieures, entrez la commande suivante :

      c:\workspace> tf rollback /changeset:314
      
    • Si vous souhaitez que les modifications apportées à $/BranchA/Util.cs en juillet ne soient jamais réappliquées à $/BranchB/Util.cs lors de fusions ultérieures, entrez la commande suivante :

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Quelques semaines plus tard, vous fusionnez $/BranchA/ en $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Si vous avez omis l’option /keepmergehistory lors de la restauration, la modification fusionner s’applique à $/BranchB/Util.cs à tous les ensembles de modifications qui ont été appliqués à $/BranchA/Util.cs depuis l’ensemble de modifications 292, y compris les ensembles de modifications 297, 301 et 305. En d’autres termes, la fusion annule la modification de restauration.

    • Si vous avez inclus l’option /keepmergehistory lors de la restauration, l’opération de fusion s’applique à $/BranchB/Util.cs tous les ensembles de modifications qui ont été appliqués à $/BranchA/Util.cs depuis l’ensemble de modifications 292, à l’exclusion des ensembles de modifications 297, 301 et 305. En d’autres termes, la fusion n’annule pas la modification de restauration. Par conséquent, le contenu de BranchA peut ne pas correspondre au contenu de BranchB.