178 votes

TFS : Comment annuler l'extraction de fichiers non modifiés dans un fichier batch ?

Nous utilisons un fichier batch pour générer du code, et il extrait automatiquement les fichiers générés de Team Foundation Server (TFS) afin de pouvoir les régénérer. La majorité de ces fichiers ne sont pas modifiés, mais le générateur ne le sait pas à l'avance.

La commande "tfs undo" annule le checkout, mais demande si certains ont été modifiés (ce que nous ne voulons pas faire). Nous ne voulons pas non plus archiver les fichiers générés tout de suite.

Existe-t-il une commande (ou une série de commandes) permettant d'annuler l'extraction de tous les fichiers non modifiés sans en avertir l'utilisateur ?

0 votes

Notez que le fait d'annuler manuellement toutes les modifications dans l'espoir de choisir "Non à toutes" lorsque l'on vous demande des informations sur les fichiers qui ont été modifiés par l'utilisateur. ont modifié ne fonctionnera pas correctement, car il annulera ADD les changements sans y être invité (voir Réponse de Ray ).

203voto

Mike Chaliy Points 8694

Jetez un coup d'œil à la commande Undo Unchanged de l'application Outils puissants de Team Foundation Server Août 2011

c:\myProject> tfpt uu . /noget /recursive

Merci Matt Florence pour la mise à jour du lien.

Merci Ray Vega pour syntaxe réelle .

1 votes

Il convient de modifier ou de fusionner cette réponse pour que les informations d'utilisation fassent partie du contenu de la réponse.

4 votes

Vous voulez vraiment lire ce post : aaubry.net/undo-checkout-on-unchanged-files-tfs.html

19 votes

Hmm, quelque chose que presque tout le monde fait plusieurs fois par jour : "Mettons-le dans un installateur séparé appelé Power Tools"... soupir.

127voto

Ray Vega Points 30187

Installer Outils puissants de Team Foundation Server et exécutez ce qui suit depuis la ligne de commande en utilisant tfpt.exe à la racine du répertoire de l'espace de travail de votre projet :

c:\myProject> tfpt uu . /noget /recursive

Y compris /noget est fortement recommandé, car il empêche de forcer un "get latest" de tous les fichiers de votre projet, ce qui, selon le nombre total de fichiers, peut prendre un temps extrêmement long.

12 votes

Cette réponse devrait être acceptée, car elle contient tous les détails pertinents (comme le prouve le score plus élevé).

7 votes

Cool. Aussi, pourquoi ne pas l'ajouter en tant qu'"outil externe" permanent à Visual Studio. Prenons cet exemple : blog.kurtschindler.net/post/ Commandement : [votre répertoire d'installation] \TFPT.EXE Arguments : uu . /noget /recursive Répertoire initial : $(SolutionDir)

12 votes

La question précise de faire cette opération sans l'invite mais aucune des réponses ne semble aborder ce sujet. Si vous en avez besoin, l'outil supplémentaire /noprompt est l'option que vous recherchez. Il manque cette option dans la documentation de PowerTools ! Elle liste cette option pour quelques commandes, mais pas pour celle-ci (UU). Attention !

122voto

Ofir Points 839

Merci @mike & @ray,

Je souhaite rendre les choses plus faciles.

Dans VS, dans le menu Outils, cliquez sur "Outils externes".

External Tools

Cliquez sur Ajouter.

Entrez le titre.

Commande : tfpt.exe

Arguments : uu . /noget /recursive

Répertoire initial : [vous pouvez choisir à partir du bouton fléché].

Undo unchanged in solution

Undo unchanged in project

Deux nouvelles commandes sont ajoutées au menu Outils.

Utilisez-les en cas de besoin.

Profitez-en,

Ofir

3 votes

Très cool. Vous pouvez aussi aller un peu plus loin et ajouter un raccourci. Notez à quel niveau se trouve la commande que vous avez ajoutée (par exemple, elle peut être la quatrième). Ensuite, allez dans Outils -> Options -> Environnement -> Clavier -> et tapez dans la zone de texte "Afficher les commandes contenant" "Tools.External" et attribuez un raccourci. Par exemple, j'ai sélectionné Tools.ExternalCommand4 puisque ma commande d'annulation nouvellement ajoutée était la quatrième. J'ai ensuite attribué les raccourcis clavier Ctrl + Alt + U, Ctrl + Alt + U

1 votes

Pourrions-nous avoir une version actualisée de ce document ? Si j'ai trouvé tf.exe mais qu'est-ce que la commande uu ? Il me dit Commande non reconnue : uu. Merci pour votre aide

1 votes

@Shay : Cela fonctionne pour moi dans VS2015 avec les derniers outils TFS installés.

8voto

Martin Woodward Points 9972

Si vous réintroduisez simplement tous les fichiers que vous avez extraits, TFS est suffisamment intelligent pour déterminer lesquels ont été modifiés et les inclure uniquement dans le jeu de modifications enregistré sur le serveur.

TFS fait cela en comparant les hachages MD5 du contenu des fichiers avant et après l'archivage.

Tout ceci suppose que votre processus de génération ne fait que mettre à jour le même ensemble de fichiers, c'est-à-dire que vous n'aurez jamais le cas où un fichier qui a été généré dans une génération précédente n'est pas nécessaire dans la génération suivante (c'est-à-dire que vous voudriez suspendre une suppression pour ce fichier) ou que les fichiers changent de nom.

Si votre processus peut potentiellement nécessiter la suppression de fichiers, votre meilleure chance est de regarder l'onglet Outils puissants de Team Foundation ( tfpt ) et utiliser la commande tfpt online qui ne vérifiera que les fichiers qui ont été modifiés, et sera assez intelligente pour suspendre les suppressions pour tous les fichiers qui ne sont plus nécessaires ou dont le nom a été modifié et suspendre les ajouts.

Bonne chance,

Martin.

6 votes

Merci pour cela, mais nous ne voulons pas vérifier les fichiers modifiés à ce moment-là. Les fichiers modifiés ne doivent pas être archivés tant que la fonctionnalité n'est pas terminée, mais les fichiers non modifiés doivent être supprimés pour que le développeur puisse revoir les changements.

0 votes

@RobertWagner Si vous disposez d'un système de construction automatique, vous pouvez annuler (s'il ne s'interrompt pas lors de la détection d'un fichier identique) lorsque vous recevez l'alerte contextuelle indiquant que les modifications doivent être construites en premier.

6voto

evermeire Points 124

Attention, l'annulation de TFS ne rétablira pas la valeur de la "date de modification" du système de fichiers. C'est très frustrant, surtout si vous utilisez des outils comme robocopy pour synchroniser des machines distantes. Même après avoir annulé votre check-out, si vous avez sauvegardé le fichier en mettant à jour la valeur "Date Modified", cette valeur mise à jour sera conservée même après une annulation du check-out.

1 votes

Utilisez soit robocopy soit un VCS, l'utilisation d'un mélange donnera toujours des incohérences. Le mieux serait de peupler chaque machine directement à partir de VCS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X