web-dev-qa-db-fra.com

Le déplacement de fichiers perd l'historique dans TFS 2013

J'utilise VS2013 Update 4 avec TFS 2013 Update 4. Dans Source Control Explorer, chaque fois que je déplace un fichier d'un dossier à un autre, je constate que l'historique du fichier est conservé au nouvel emplacement. Cependant, cet historique a disparu lorsque j'archive les modifications en attente. La même chose se produit lorsque j'essaie d'exécuter la commande "tf move". Alors, comment pouvez-vous déplacer un fichier dans TFS tout en conservant l'historique du fichier?

13
TDN

Lorsqu'un fichier est renommé correctement, l'historique n'est pas "parti", il est associé à "l'ancien nom". Un changement de nom effectué correctement (suivi comme changement de nom et non comme suppression/ajout) comporte une option d'exploration pour afficher l'historique "plus ancien":

enter image description here

  • Changeset 81 ~ 82 contient les modifications apportées à l'ancien nom
  • Le jeu de modifications 83 contient les éléments delete + rename
  • Changeset 84 un nouveau changement qui a été archivé après le changement de nom

Lorsqu'un changement de nom est effectué en dehors de l'Explorateur de contrôle source (ou à partir d'une très ancienne version de l'Explorateur de contrôle source (par exemple, VS 2008)) ou en dehors de l'Explorateur de solutions, la modification est détectée sous la forme de deux actions individuelles, une supprimer et un ajouter . Vous pouvez utiliser la fenêtre "Modifications en attente" pour les promouvoir en les renommant de manière à conserver l'historique:

enter image description here

Sur la ligne de commande, cela ne peut être accompli qu'avec "tf rename" et "tf move". L'utilisation des commandes standard "mv" et "ren" échouera à préserver l'historique.

Vous trouverez ci-dessous un autre exemple d'utilisation de toutes les méthodes et montrant clairement que l'historique est préservé en consultant l'historique du nom de fichier actuel:

enter image description here

Comme mentionné dans les commentaires, l'historique est stocké dans le projet d'équipe qui contient la révision des éléments. Lorsque vous modifiez/déplacez des projets, votre historique sera réparti entre ces projets. Si vous supprimez un projet d'équipe, tout l'historique accumulé dans ce projet sera perdu.

20
jessehouwing

Je suis venu à cette question de cette question .

Le problème existe depuis TFS2010 et ne concerne pas uniquement les fichiers renommés ou déplacés, mais également les dossiers renommés ou déplacés. Le pire, s’il s’agit d’une branche renommée puis de l’historique des dossiers. Ensuite, vous ne trouvez que votre changeset renommé.

Ici , vous pouvez voir la réaction de MS sur cette tâche. En gros, ils disent ne pas le faire parce que cela demande beaucoup de travail et ralentit l’histoire.

Je ne pouvais pas vivre avec ce fait et programmé un correctif pour cela. La sélection d’historique récursive a lieu dans SP _ {dbo.prc_QueryHistory. J'ai changé le SP et ajouté les fonctionnalités suivantes:

  • (en tant que recherche normale des 256 derniers changesets de manière récursive)
  • puis vérifiez les changesets si certains d'entre eux représentent des opérations de changement de nom/déplacement
  • si c'est le cas récursivement (en boucle), suivez chaque renommage/déplacement vers son ancien ItemId et répétez cette étape (au cas où un fichier/dossier aurait été renommé plusieurs fois)
  • puis trouver tous les changesets antérieurs à l'ancien ItemIds (déplacer/renommer le ItemId)
  • ajoute les changesets récemment trouvés à la liste des changesets et coupe-le à la ligne 256

L'effet est un historique plus lent (surtout si vous le faites à la racine d'une arborescence de dossiers profond), mais le problème est résolu. Et je vis plutôt avec une histoire lente qu'avec une histoire incomplète.

Je pourrais vous fournir le SP que j'ai écrit, mais je ne sais pas si je serais autorisé à le publier ici, car il contient du code protégé par MS. (Et bien entendu, je ne peux pas garantir que le correctif persistera lors de la mise à jour du système. - J'ai écrit mon SP sur un SP3 2013 de TFS.)

Mise à jour: J'ai demandé à MS l'autorisation de publier mon correctif (2e lien de mon message)

2
Florian Boeck

Je ne pense pas que le correctif jessehouwing fonctionne pour les dossiers. En fait, si vous utilisez Source Control Explorer de VS 2012+, le déplacement des dossiers préserve l'historique des fichiers (affiche récursif dans VS), mais pas pour les dossiers. L'historique des dossiers est plat.

La solution à ce problème:

  1. Microsoft corrige le mode d'affichage de l'historique des dossiers dans VS ou ajoute un élément du menu contextuel Afficher l'historique récursif.
  2. Migrez tous les changesets d'un dossier à un autre. Malheureusement, je n'arrive toujours pas à identifier un outil capable de le faire pour TFS 2013 ou VSO.
0
vezenkov