Supposons qu'un développeur de mon équipe ait mis de côté ses modifications qu'il a effectuées dans la branche A. Et je travaille sur la branche B. Puis-je annuler ses modifications dans la branche B? (Par GUI ou invite de commande)
Supposons qu'un développeur de mon équipe ait mis de côté ses modifications qu'il a effectuées dans la branche A. Et je travaille sur la branche B. Puis-je annuler ses modifications dans la branche B? (Par GUI ou invite de commande)
Réponses:
Les outils d'alimentation de Visual Studio devraient 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 d'étagères appelé "Shelve Set Name" créé sur Branch1 vers Branch2, utilisez ceci:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Solution alternative au tfpt qui évite d'avoir à fusionner chaque fichier manuellement
Le problème avec l'outil électrique tfs est que vous effectuez une «fusion sans base», vous devez donc confirmer chaque fichier . J'avais une étagère de plus de 800 fichiers et je ne fais jamais confiance au bouton de fusion automatique et je ne voulais pas parcourir chaque fichier à tour de rôle - j'ai donc dû trouver un autre moyen!
C:\temp\shelveset-name
(Remarque: il n'y a pas de barre de progression lors de l'exportation - donc si vous avez une grande étagère qui prend beaucoup de temps à exporter, vous devrez simplement vérifier dans l'Explorateur Windows (Fichier> Propriétés> Taille) que les fichiers sont toujours en baisse si vous pense que c'est gelé).
Il ne vous reste plus qu'à les copier dans la nouvelle branche avec l'Explorateur Windows.
Cela a fonctionné pour moi:
c:\temp\shelveset-name
devra être renommée pour correspondre à la nouvelle branche. Astuce: assurez-vous de copier au bon endroit !!!Important: j'ai constaté que si vous ne mettez pas TFS hors ligne pour la première fois, vous vous retrouverez avec tous les nouveaux fichiers (de votre ensemble de modifications des étagères) apparaissant sans une petite coche rouge et vous devrez les exclure et les inclure à nouveau pour les amener à ajouter. Si quelqu'un a une solution alternative à ce problème, j'aimerais savoir - le rafraîchissement ne semble pas fonctionner.
Les informations de l'étagère incluent le chemin d'accès spécifique vers lequel elles vont. Malheureusement, je ne connais aucun moyen automatique de déverrouiller à un autre endroit que celui où il a été mis en attente. Les fois où j'ai voulu faire cela, j'ai dû extraire les fichiers équivalents dans la nouvelle branche, retirer de l'ancienne branche, puis copier manuellement les fichiers.
EDIT: Eh bien, je suppose que je le faisais à la dure. Je vais devoir essayer la solution de Curt. :)
J'ai passé beaucoup de temps à y parvenir et j'avais peu de problèmes à surmonter. C'est possible mais ici quelques problèmes et quelques règles à suivre pour éviter ces problèmes
Erreur:
impossible de déterminer l'espace de travail
Ce problème particulier a été résolu en exécutant la commande à partir du dossier racine de la branche source . 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. Il semble qu'il ne puisse 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 ne savais pas que la même connexion devait être répliquée dans VS13 pour que TFPT2013 fonctionne. Il se connecte au même serveur et espace de travail.
J'ai également essayé de le faire en utilisant TFPT2015 mais je l'ai installé et il n'a pas installé TFPT.exe, il était donc 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
Les étapes suivantes peuvent être utilisées pour les étagères de petite taille (~ 20 fichiers ou moins).