Comment annuler un enregistrement TFS?


92

Je souhaite annuler une modification que j'ai apportée récemment dans TFS. Dans Subversion, c'était assez simple. Cependant, cela semble être un casse-tête incroyable dans TFS:

Option 1: obtenir la version précédente

  1. Obtenir manuellement la version précédente de chaque fichier
  2. Vérifiez pour modifier
  3. Échec - la vérification (dans VS2008) m'oblige à obtenir la dernière version

Option 2: obtenir les outils électriques TFS

  1. Télécharger Team Foundation Power Tools
  2. Émettre la commande de restauration à partir de la ligne cmd
  3. Échec - cela ne fonctionnera pas s'il y a d'autres modifications en attente

Option 3: annuler manuellement les modifications

  1. annuler manuellement mes modifications, puis valider un nouvel ensemble de modifications

Question

Comment revenir à un ensemble de modifications précédent dans TFS?


2
VSS n'a pas de restauration. Ils ont une autre fonctionnalité qui se trouve être nommée "rollback", mais en termes TFS, c'est vraiment un Destroy. (a) vous ne pouvez le faire qu'à partir de la pointe; cela ne fonctionnera pas si des modifications supplémentaires ont été enregistrées après celle que vous souhaitez annuler (b) il SUPPRIME DE MANIÈRE PERMANENTE les modifications de la base de données
Richard Berg

1
Oh combien j'aspire à la facilité de la restauration VSS.
Greg

2
Je suis tombé sur ce problème récemment - pourquoi diable est-il si difficile de revenir en arrière dans TFS. Roll-back c'est l'une des fonctions de base du contrôle de code source
JohnIdol

2
C'est bien trop douloureux dans TFS!
Jon Kragh

1
Passez à Mercurial! J'ai changé de travail et me suis attaché à TFS. Depuis, j'écris des scripts PowerShell pour le faire ressembler à Hg depuis la ligne de commande.
Sumo

Réponses:


63
  1. Téléchargez et installez Team Foundation Power Tools .
  2. Ouvrez l'invite de commande Visual Studio
  3. Accédez au répertoire du système de fichiers auquel TFS est mappé. Si vous ne le faites pas, vous obtiendrez une erreur "Impossible de déterminer l'espace de travail" lorsque vous essayez de revenir en arrière
  4. Assurez-vous que tout le reste est enregistré ou mis sur les tablettes
  5. exécutez tfpt rollback pour faire apparaître l'interface.
  6. Choisissez les ensembles de modifications que vous souhaitez restaurer
  7. Archivez les nouvelles versions des fichiers que vous avez restaurés

Le gros inconvénient de l'outil est qu'il voudra actualiser tout ce qui se trouve dans votre espace de travail avant de pouvoir fusionner. J'ai contourné ce problème en créant un nouvel espace de travail juste pour la restauration qui mappait directement à l'endroit dans l'arborescence source où se trouvaient les fichiers affectés.

Si vous avez besoin d'aide pour déterminer les ensembles de modifications à restaurer, je trouve l'outil de révision de code dans le complément gratuit Team Foundation Side Kicks très utile.


Vous pouvez essayer de cette façon, mais soyez prévenu, les outils ne sont pas bien documentés, et même si vous pouvez surmonter toutes les erreurs, vous pouvez ou non être en mesure de vraiment revenir en arrière. (Je viens d'essayer pendant 2 heures)
alchimique

1
Cette technique a fonctionné pour moi. La suggestion d'espace de travail était très bonne (et est importante si vous avez affaire à une grande base de code).
cloggins

1
Attention ... il y a un hic 22 si vous utilisez des versions incompatibles de TFS et Visual Studio. J'utilise VS2010 avec TFS2008 (un cas classique de l'informatique qui ne rattrape pas le développement) et TF.EXE avec VS2010 a maintenant une restauration ... mais cela ne fonctionne pas contre TFS2008. Et tfpt 2010 a supprimé la restauration, donc je ne peux pas le faire à l'ancienne.
Simon Gillbee

7
la commande 'rollback' a été déplacée de Power Tools pour VS2010, il vous suffit maintenant de taper 'tf rollback': social.msdn.microsoft.com/Forums/en/tfspowertools/thread/…
Dan

À partir de la version août 2011 de TFS Power Tools, pour revenir en arrière, vous n'avez plus besoin d'utiliser la ligne de commande.
joerage le

24

Votre solution n ° 1 fonctionnera: 1. obtenir manuellement la version précédente de chaque fichier

  1. vérifier pour modifier

  2. Archivez le fichier et ignorez les modifications du serveur lorsque vous y êtes invité.

La raison pour laquelle il a échoué pour vous est que vous devez avoir activé l'option "Obtenir la dernière version de l'élément à la sortie". Désactivez cette option en accédant à Outils ... Options ... Contrôle de code source ... Visual Studio Tema Foundation Server et en décochant "Obtenir la dernière version de l'élément lors de l'extraction"

À votre santé


2
Je l'ai fait de cette façon après avoir lutté 2 heures avec les outils électriques et ne pas aller nulle part ... wtf est avec TFS ne prenant pas en charge cette fonctionnalité de base ...
alchimique

La fonctionnalité est ajoutée à TFS 2010 / Visual Studio 2010.
Robaticus

2
Pour être clair, ce n'est pas un vrai retour en arrière. Il obtient une version plus ancienne. Pas la même chose.
Ryan Cromwell

+1 pour avoir signalé le problème avec le paramètre Obtenir la dernière version de l'article lors du paiement !
Sir Crispalot

18

La restauration a été déplacée de tfpt.exe vers tf.exe, l'outil de contrôle de version de Team Foundation.

TF - Team Foundation Version Control Tool, Version 10.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Rolls back the changes in a single or a range of changesets:
tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

tf rollback /toversion:versionspec itemspec [/recursive]
            [/lock:none|checkin|checkout] [/version:versionspec]
            [/keepmergehistory] [/noprompt] [/login:username,[password]]

1
Existe-t-il un moyen de le faire directement à partir de Visual Studio?
Kyle Delaney

14

Vous avez deux options pour restaurer (restaurer) un ensemble de modifications dans le contrôle de version TFS 2010. La première option consiste à utiliser l'interface utilisateur (si la dernière version des outils électriques TFS 2010 est installée).

Restauration de l'ensemble de modifications dans l'interface utilisateur pour TFS 2010

L'autre option utilise l'application de ligne de commande de contrôle de version TFS 2010:

tf.exe rollback

J'ai des informations sur les deux approches sur mon article de blog disponible ici: http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx


14

Une autre façon de faire fonctionner votre option 1 est d'inverser l'ordre des étapes:

  1. Découvrez les articles
  2. Obtenir une version spécifique de l'ancienne version
  3. Archiver (en ignorant la boîte de dialogue "La version du serveur d'avertissement est plus récente") OU dans la section des conflits de la boîte de dialogue Modifications en attente, résoudre les conflits en conservant la version locale.

Cela fonctionnera même si vous avez défini Get Latest On Checkout.


1
N'a pas travaillé pour moi. Mais cela doit être dû au fait qu'une tête d'épingle a configuré le TFS avec des politiques stupides.
SHODAN

5

Pour référence, si vous utilisez TFS 2010 , voici le lien vers le manuel de Rollback Command (Team Foundation Version Control) .

Pour restaurer un ensemble de modifications particulier , accédez à l' invite de commandes Visual Studio (2010) , accédez au répertoire de votre espace de travail TFS et saisissez la commande:

tf rollback /changeset:C12345

12345est votre numéro de changeset. Après cela, il vous montrera le journal de ce qu'il a fait et vous devrez trier les conflits de fusion.



4

Ne pas avoir d'option de restauration est en fait une fonctionnalité de TFS;)

Pour annuler les modifications:

  1. Découvrez la version spécifique des modifications que vous souhaitez
  2. Edition-> Tout sélectionner-> Copier le texte dans le fichier
  3. Récupérer la version du fichier sur le serveur
  4. Collez le fichier et archivez-le.

Et maintenant, tous vos ensembles de modifications intermédiaires avant la restauration sont également enregistrés! Quelle belle fonctionnalité!


Au début, je pensais que c'était sarcastique, mais cette solution peut en fait fonctionner pour ceux d'entre nous qui n'ont pas la chance d'avoir obtenu l'autorisation de revenir en arrière.
EBarr

Sauf si des modifications ont été apportées ultérieurement aux mêmes fichiers que vous souhaitez réellement conserver.
Robert Jeppesen

Brut mais c'est la seule façon dont je peux effectuer cela dans TFS. Si je fais une vérification, puis récupère l'ancienne version TFS fusionnera automatiquement vers la dernière version chaque fois que j'essayerai de la réenregistrer.
Steve

1

Si vous avez effectué 1 check-in et que vous souhaitez simplement l'annuler, un changeset # y est associé. Faites un historique sur le dossier en question pour voir le jeu de modifications incorrect. Ouvrez-le pour voir les détails (tous les fichiers ont été modifiés, etc.).

Je pense que vous pouvez restaurer ou annuler un ensemble de modifications à partir de cet écran, mais mon Visual Studio vient de planter lorsque j'ai essayé de le faire. / soupir - Je partage définitivement ta douleur.

Où télécharger TFS sur ce site?


Non, la restauration de l'interface utilisateur de l'historique n'a été ajoutée que dans TFS 2010.
Richard Berg


1

Ben Scheirman - la boîte de dialogue Détails du jeu de modifications n'a pas de fonctionnalité de restauration.


1

Une autre option est TFSPlus . Ce complément Visual Studio ajoute (entre autres) la commande Obtenir cette version à la fenêtre d'historique. Si vous avez extrait le fichier, il le remplacera par cette version. Si vous effectuez un enregistrement par la suite, vous effectuerez effectivement une restauration vers cette version.

Cela fonctionne sur des fichiers individuels plutôt que sur des ensembles de modifications complets.



1

Obtenir une version spécifique

Dans la liste déroulante Type de version , sélectionnez Type comme ensemble de modifications

Utilisez le bouton Changeset ... pour trouver votre Changeset ou tapez simplement, si vous connaissez ce numéro.

Une fois que vous avez le jeu de modifications spécifique.

Check-out

Enregistrement


0

Aucune de ces solutions n'a vraiment fonctionné pour moi. La solution de Dave Roberts était la plus proche de ce que je faisais réellement. Je n'ai pas activé l'option Obtenir la dernière version de l'élément lors du départ, mais cela semble être une politique de serveur.

Ma solution consiste à extraire le fichier pour le modifier, à obtenir une version spécifique, puis, lorsque le conflit est détecté, utilisez l'outil de fusion (et ne fusionnez manuellement aucune des modifications) afin que le fichier soit dans l'état où il était.

J'allais comparer avec la version spécifique et copier le fichier entier, puis le coller au-dessus de l'ancien.

Il devrait toujours y avoir un moyen plus simple de le faire!


0

La solution ci-dessus est pour TFS2008. TFS2010 a une fonction de restauration intégrée. voir cet article pour plus de détails.


Sauf que VS2010 (tf) ne fonctionne pas contre TFS2008 et puisque TFPT 2010 n'a plus de rollback, vous êtes arrosé.
Simon Gillbee

0

Installez la dernière version des outils d'alimentation TFS (août 2011), et vous pouvez simplement cliquer avec le bouton droit sur un ensemble de modifications et sélectionner «Annuler l'ensemble des modifications». Ce n'est pas beaucoup plus facile que ça.

Il est disponible ici: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

Il est indiqué sous Améliorations de Team Explorer sur la page ci-dessus:

La nouveauté de cette version est la possibilité [..] d'annuler facilement les modifications du contrôle de version.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.