179 votes

Pourquoi TFS ne récupère-t-il pas la dernière version?

Pourquoi Pourquoi POURQUOI le "get latest" de TFS ne fonctionne-t-il pas de manière cohérente?

Vous auriez pensé que cette fonctionnalité aurait été testée en profondeur.

Ce que je dois faire, c'est obtenir une version spécifique, puis cocher à la fois "écraser les fichiers en lecture seule" et "écraser tous les fichiers".

Est-ce que ma configuration locale est mauvaise ou est-ce que vous le faites aussi?

0 votes

La chose la plus stupide que je vois est que "Obtenir la dernière version" ne fait rien même lorsque le fichier local a été supprimé pour une raison quelconque. J'aurais pensé que vérifier au moins que le fichier local existe était une chose assez évidente à faire. Mais pourquoi il ne peut pas simplement comparer le horodatage de chaque fichier sur le serveur avec le moment où vous avez fait la dernière récupération (qui pourrait être stockée quelque part localement) me laisse perplexe.

0 votes

Il s'agit d'un commentaire.

0 votes

C'est septembre 2020. Je suis ici pour la même raison que la plupart des gens. Obtenir la dernière version ne donne pas la dernière version. JE SUPPRIME l'intégralité du dossier de solution ! Fermez VS, nettoyez la corbeille, redémarrez votre téléphone. Ouvre le fichier sln depuis l'explorateur de contrôle de source TFS. Malgré cela, je continue à rencontrer des fichiers et des projets qui ne fonctionnent pas / des fichiers manquants.

120voto

Chris Lively Points 59564

TFS a redéfini ce que fait "Get Latest". En termes de TFS, Get Latest signifie obtenir la dernière version des fichiers, mais ignorer ceux que le serveur pense déjà être dans votre espace de travail. Ce qui pour moi et pour à peu près tout le monde sur la planète est incorrect.

Voir ce lien : http://blogs.microsoft.co.il/blogs/srlteam/archive/2009/04/13/how-get-latest-version-really-works.aspx

La seule façon de lui faire faire ce que vous voulez est d'obtenir une version spécifique, puis cocher les deux cases "Écraser ...".

1 votes

Ce billet de blog parle d'autre chose entièrement, c'est-à-dire que vous n'obtenez pas la dernière version d'un fichier lorsque vous le vérifiez pour le modifier. Vous indiquez simplement que vous modifiez la version du fichier que vous avez actuellement dans votre version locale. Obtenir la dernière version mettra à jour ma copie locale vérifiée avec de nouveaux fichiers des autres développeurs. Notez que parfois ils oublient de vérifier le projet ainsi que le fichier, donc il n'apparaît pas dans la solution, mais le fichier est là quand même.

1 votes

@tvanfosson: J'avais posté le mauvais lien. Un nouveau lien mis à jour est maintenant disponible.

8 votes

Ce n'est pas correct. TFS "get latest" fonctionne exactement comme annoncé, tant que TFS est informé des modifications apportées aux fichiers. Get Latest ne "foire" que lorsque les gens vont modifier des fichiers en dehors de l'IDE sans les vérifier d'abord. Ensuite, TFS croit que vous avez la dernière source sur le disque, et ne la récupère pas.

42voto

Simon_Weaver Points 31141

Parfois Obtenir une version spécifique même en cochant les deux cases à cocher ne vous permettra pas d'obtenir le fichier le plus récent. Vous avez probablement apporté une modification à un fichier et souhaitez annuler ces modifications en récupérant la dernière version. Eh bien... c'est à cela que sert Annuler les modifications en attente et non à la récupération d'une version spécifique.

En cas de doute :

  • annulez l'enregistrement en attente du(des) fichier(s)
  • effectuez une comparaison par la suite pour vous assurer que votre fichier correspond à la version attendue
  • exécutez une 'comparaison' récursive sur l'ensemble de votre projet pour voir ce qui est différent
  • gardez un œil sur la fenêtre des modifications en attente et parfois vous devrez peut-être cocher 'prendre la version du serveur' pour résoudre une modification en attente incompatible

Et voici ma découverte préférée :

  • gardez un œil sur la fenêtre Sortie pour des messages tels que celui-ci :

    Avertissement - Impossible de rafraîchir R:\TFS-PROJECTS\www.example.com\ExampleMVC\Example MVC\Example MVC.csproj car vous avez une modification en attente.

Ce message critique apparaît dans la fenêtre de sortie. Aucune autre notification ! Rien dans les modifications en attente et aucun autre message de dialogue vous indiquant que le fichier que vous avez explicitement demandé n'a pas été récupéré ! Et oui - pour résoudre cela, il vous suffit d'exécuter Annuler les modifications en attente et de récupérer le fichier.

0 votes

Merci, votre réponse (Annuler les modifications en attente) a fonctionné pour moi.

0 votes

Assurez-vous simplement d'annuler uniquement les modifications sur le fichier que vous souhaitez vraiment remplacer et non sur tout ce sur quoi vous travaillez.

0 votes

@Simon_Weaver Merci, cela a résolu mon problème, donc ça a du sens pourquoi cela se produit encore super ennuyeux cependant.

12voto

Rowland Shaw Points 22860

TFS, comme certains autres fournisseurs de contrôle de source, tels que Perforce, fait cela, car le système sait quelle était la dernière version que vous avez obtenue avec succès, donc "obtenir la dernière version" se transforme en "obtenir les modifications depuis x". Si vous suivez ses règles et que vous vérifiez réellement les éléments avant de les modifier, vous ne confondez pas les choses, et "obtenir la dernière version" fonctionne vraiment comme indiqué.

Comme vous l'avez vu, vous pouvez le forcer à réévaluer tout, ce qui entraîne une utilisation beaucoup plus importante de la bande passante, mais se comporte de manière plus proche de ce que SourceSafe soliait faire.

6voto

Nick Points 2689

L'équipe Foundation Server (TFS) garde une trace de sa copie locale dans un répertoire caché appelé $TF. Lorsque vous lancez "Obtenir la dernière version", TFS regarde dans ce dossier pour voir si j'ai la dernière copie ou non. Si c'est le cas, il ne téléchargera pas la dernière copie. Peu importe si vous avez le fichier original ou non. En fait, vous pourriez avoir supprimé le dossier entier (comme dans mon cas) et TFS ne récupérera pas la dernière copie car il ne regarde pas dans le fichier réel mais dans le répertoire caché où il enregistre les modifications. Le défaut de ce design est que tout ce qui est fait en dehors du système ne sera pas enregistré dans TFS. Par exemple, vous pourriez aller dans l'explorateur Windows, supprimer un dossier ou un fichier et TFS ne le reconnaîtra pas. Il sera totalement aveugle. Au moins, je m'attendrais à ce que Windows ne vous permette pas de supprimer ce fichier, mais c'est le cas!

Une façon d'imposer la dernière copie est de supprimer manuellement le dossier $TF caché. Pour ce faire, allez dans l'invite de commandes et naviguez jusqu'au dossier racine où votre projet a été vérifié et lancez cette commande

rd/s $tf                    // supprimer le dossier $TF et tout ce qu'il contient

Si vous voulez simplement vérifier le dossier caché, vous pouvez le faire en utilisant

dir /ah                    // afficher les fichiers et dossiers cachés

Remarque : Si vous le faites, tf pensera que vous n'avez pas de copie locale même si vous l'avez dans les fichiers et il synchronisera tout à nouveau.

Attention : Utilisez cette méthode à vos propres risques. Veuillez ne pas l'utiliser sur un travail critique.

0 votes

Cela a fonctionné pour moi quand rien d'autre ne fonctionnait. J'ai essayé d'obtenir une version spécifique et j'ai coché les deux cases pour forcer le téléchargement, mais cela n'a pas permis d'obtenir les fichiers. Je pense que quelque chose était corrompu. Mais cette solution a fonctionné.

3voto

David Points 20209

"Obtenir la dernière version" par défaut ne téléchargera que les fichiers qui ont changé sur le serveur depuis la dernière fois où vous avez exécuté "Obtenir la dernière version". TFS garde une trace des fichiers que vous téléchargez afin de ne pas passer du temps à télécharger à nouveau la même version des fichiers. Si vous modifiez les fichiers en dehors de Visual Studio, cela peut causer les problèmes de cohérence que vous semblez rencontrer.

0 votes

Dites-nous COMMENT réinitialiser ces informations [dernière modification] ; au lieu de ce que nous savons déjà :) Et vous avez aidé l'OP à comprendre ce que personne d'autre ne peut résoudre.

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