Antworten:
Mit den Visual Studio Power Tools sollten Sie dies tun können.
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
Verwenden Sie beispielsweise Folgendes, um einen Regalsatz mit dem Namen "Name des Regalsatzes", der in Branch1 erstellt wurde, mit Branch2 zusammenzuführen:
>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Alternative Lösung zu tfpt, bei der nicht jede Datei manuell zusammengeführt werden muss
Das Problem mit dem tfs-Elektrowerkzeug besteht darin, dass Sie eine "unbegründete Zusammenführung" durchführen und daher jede Datei bestätigen müssen . Ich hatte ein Regal mit über 800 Dateien und vertraue nie der Schaltfläche "Automatisch zusammenführen" und wollte nicht jede Datei nacheinander durchgehen - also musste ich einen anderen Weg finden!
C:\temp\shelveset-name
(Hinweis: Beim Exportieren wird kein Fortschrittsbalken angezeigt. Wenn Sie also ein großes Regal haben, dessen Export lange dauert, müssen Sie im Windows-Explorer (Datei> Eigenschaften> Größe) nur überprüfen, ob die Dateien weiterhin angezeigt werden denke, es ist eingefroren).
Sie müssen sie nur noch mit Windows Explorer in den neuen Zweig kopieren.
Das hat bei mir funktioniert:
c:\temp\shelveset-name
muss umbenannt werden, um dem neuen Zweig zu entsprechen. Tipp: Stellen Sie sicher, dass Sie an die richtige Stelle kopieren !!!Wichtig: Ich habe festgestellt, dass, wenn Sie TFS nicht zum ersten Mal offline schalten, neue Dateien (aus Ihrem Änderungssatz für Nicht-Helves) ohne ein kleines rotes Häkchen angezeigt werden und Sie diese ausschließen und erneut einschließen müssen um sie zum Hinzufügen zu bringen. Wenn jemand eine alternative Lösung für dieses Problem hat, würde ich gerne wissen, dass das Auffrischen nicht funktioniert.
Die Regalinformationen enthalten den spezifischen Pfad, zu dem sie gehen. Leider kenne ich keine automatische Möglichkeit, die Verbindung zu einem anderen Ort als dem, an den sie zurückgestellt wurde, zu entfernen. Wenn ich dies tun wollte, musste ich die entsprechenden Dateien in der neuen Verzweigung auschecken, die Verknüpfung zur alten Verzweigung aufheben und die Dateien dann manuell kopieren.
EDIT: Nun, ich denke, ich habe es auf die harte Tour gemacht. Ich muss Curt's Lösung ausprobieren. :) :)
Ich habe viel Zeit damit verbracht, dies zu erledigen, und ich hatte nur wenige Probleme zu lösen. Es ist möglich, aber hier einige Probleme und Regeln zu befolgen, um diese Probleme zu lösen
Error:
Arbeitsbereich kann nicht ermittelt werden
Dieses besondere Problem wurde durch Ausführen des Befehls nicht gelöst Quelle Zweig Stammordner. Dies steht im Widerspruch zu einigen Antworten auf SO, in denen sie sagen, dass sie den "Ziel" -Zweig verwenden sollen - nein, verwenden Sie "Quelle":
cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"
Danach erschien die zweite Ausgabe. Es scheint, dass keine Verbindung zum TFS-Server hergestellt werden konnte. Was mir klar wurde, ich habe mehrere VS installiert und mit verschiedenen TFS-Servern verbunden. Ich habe VS12 verwendet und hatte einen Arbeitsbereich und eine Serververbindung. Ich wusste jedoch nicht, dass dieselbe Verbindung in VS13 repliziert werden muss, damit TFPT2013 funktioniert. Es stellt eine Verbindung zu demselben Server und Arbeitsbereich her.
Ich habe es auch mit TFPT2015 versucht, aber ich habe es installiert und es hat TFPT.exe nicht installiert, daher war es nutzlos. Also habe ich es von TFPT2013 bis TFS2015 versucht und es hat für diesen bestimmten Befehl funktioniert. Ich frage mich, warum nicht, wenn VS12 / 13 gegen TFS2015 gut funktioniert?
Zusammenfassen
Die folgenden Schritte können für kleine Regale (~ 20 Dateien oder weniger) verwendet werden.