web-dev-qa-db-fra.com

Puis-je me désinscrire dans une autre branche dans tfs 2008?

Supposons qu'un développeur de mon équipe ait mis de côté ses modifications qu'il a apportées à la branche A. Et je travaille sur la branche B. Puis-je annuler la modification de ses modifications dans la branche B? (Par GUI ou Invite de commande) 

104
spinodal

Le Visual Studio Power Tools devrait vous permettre de le faire.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Par exemple, pour fusionner un ensemble de tableaux appelé "Nom de groupe" créé sur Branch1 à Branch2, utilisez ceci:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
128
Curt Hagenlocher

Solution alternative au tfpt qui évite de devoir fusionner chaque fichier manuellement

Le problème avec l'outil d'alimentation tfs est que vous effectuez une "fusion sans fondement", vous devez donc confirmer chaque fichier . J'avais un stock de plus de 800 fichiers et je n'avais jamais confiance en le bouton de "fusion automatique" et je ne voulais pas parcourir chaque fichier à la fois - je devais donc trouver un autre moyen!

  • Téléchargez et installez le TFS Shelveset Sidekick
  • L'outil apparaît sous «Outils» dans VS2010.
  • Exécutez l'outil 'Shelveset Sidekick', cliquez sur Rechercher pour afficher les étagères.
  • Faites un clic droit sur votre étagère et sélectionnez "Exporter une étagère"
  • Enregistrer dans un emplacement vide tel que C:\temp\shelveset-name
  • Maintenant, avoir une structure de répertoire complète contenant JUSTE les nouveaux fichiers 

(Remarque: il n’ya pas de barre de progression lors de l’exportation - si vous avez un grand plateau qui prend beaucoup de temps à exporter, il vous suffit de vérifier dans l’Explorateur Windows (Fichier> Propriétés> Taille) que les fichiers sont toujours en cours de pense que c'est gelé).

Il ne vous reste plus qu'à les copier dans la nouvelle branche avec Windows Explorer.

Cela a fonctionné pour moi:

  • Vérification de la solution complète en premier (dans la nouvelle branche)
  • Fermez cette solution
  • Mettez TFS hors ligne depuis VS ( Outil pour ce faire ) - voir ci-dessous pourquoi cela est important ...
  • Copier des fichiers dans l'Explorateur Windows. La structure de répertoire dans c:\temp\shelveset-name devra être renommée pour correspondre à la nouvelle branche. Astuce: Assurez-vous de copier au bon endroit !!!
  • Mettez VS en ligne
  • Il devrait trouver toutes les modifications et ajouter les nouveaux fichiers
  • S'il vous demande de lier le contrôle de source, assurez-vous que le chemin est correct pour la nouvelle branche.
  • Tester - puis archiver les nouveaux fichiers

Important: j'ai constaté que si vous ne mettez pas d'abord TFS hors ligne, vous vous retrouverez avec de nouveaux fichiers (à partir de votre jeu de modifications unshelves) affichés sans une petite coche rouge et vous devrez les exclure et les réinclure. pour les amener à ajouter. Si quelqu'un avait une solution alternative à ce problème, j'aimerais bien le savoir - rafraîchir ne semble pas fonctionner.

34
Simon_Weaver

Les informations de plateau incluent le chemin spécifique auquel il se rend. Malheureusement, je ne connais aucun moyen automatique de se déplacer à un endroit autre que celui où il a été rangé. Les fois où je voulais faire cela, je devais extraire les fichiers équivalents de la nouvelle branche, unshelve de l’ancienne branche, puis les copier manuellement.

EDIT: Eh bien, je suppose que je le faisais à la dure. Je vais devoir essayer la solution de Curt. :)

1
Herms

J'ai passé beaucoup de temps à faire cela et j'avais peu de problèmes à surmonter. C'est possible mais ici peu de problèmes et peu de règles à suivre pour éviter ces problèmes 

Erreur:

incapable de déterminer l'espace de travail

Ce problème particulier a été résolu en exécutant la commande à partir du dossier racine source branch. Ceci est contraire à certaines réponses sur SO où ils disent d'utiliser la branche "cible" - non, utilisez "source":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Le deuxième numéro est apparu après cela. Apparemment, il ne pouvait pas se connecter au serveur TFS. Ce que j'ai réalisé, j'ai plusieurs VS installés et connectés à différents serveurs TFS. J'utilisais VS12 et j'avais un espace de travail et une connexion au serveur. Mais je n'avais pas réalisé que la même connexion devait être répliquée dans VS13 pour que TFPT2013 fonctionne. Il se connecte au même serveur et au même espace de travail.

J'ai aussi essayé de le faire en utilisant TFPT2015 mais je l'ai installé et il n'a pas été installé. C'est pourquoi il était inutile. J'ai donc essayé de TFPT2013 à TFS2015 et cela a fonctionné pour cette commande particulière. Je me demande pourquoi pas si VS12/13 fonctionne bien contre TFS2015?

Résumer

  • Utilisez CMD ou DevCMD - peu importe
  • commande exécutée à partir du dossier source branch
  • vérifier la connexion Team Explorer Server pour un VS spécifique
  • TF Power Tools 2013 fonctionne avec TFS v15, au moins l'option migrate fonctionne
0
T.S.