it-swarm.com.de

Kann ich mich in tfs 2008 von einem anderen Zweig trennen?

Angenommen, ein Entwickler in meinem Team hat seine Änderungen, die er in Zweig A vorgenommen hat, zurückgestellt. Ich arbeite in Zweig B. Kann ich seine Änderungen in Zweig B aufheben? (Per GUI oder Eingabeaufforderung) 

104
spinodal

Die Visual Studio Power Tools sollten Sie dies tun lassen.

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

Um beispielsweise ein in Branch1 erstelltes Shelve-Set namens "Shelve Set Name" mit Branch2 zusammenzuführen, verwenden Sie Folgendes:

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

Alternative Lösung für tfpt, die das manuelle Zusammenführen jeder Datei vermeidet

Das Problem mit dem tfs-Elektrowerkzeug ist, dass Sie eine 'grundlose Zusammenführung' durchführen, also müssen Sie jede Datei bestätigen. Ich hatte ein Regalset von über 800 Dateien und ich vertraue nie auf die Schaltfläche "Automatisch zusammenführen". Ich wollte nicht jede Datei einzeln durchgehen. Ich musste also einen anderen Weg finden!

  • Laden Sie den TFS Shelveset Sidekick herunter und installieren Sie ihn. 
  • Das Tool wird in VS2010 unter 'Tools' angezeigt
  • Führen Sie das Tool 'Shelveset Sidekick' aus und klicken Sie auf Suchen, um die Regale anzuzeigen
  • Klicken Sie mit der rechten Maustaste auf Ihr Regalset und wählen Sie 'Export Shelveset' aus.
  • Speichern Sie an einem leeren Ort wie C:\temp\shelveset-name
  • Jetzt haben Sie eine vollständige Verzeichnisstruktur, die nur die neuen Dateien enthält 

(Hinweis: Beim Exportieren gibt es keine Fortschrittsleiste. Wenn Sie also ein großes Regalset haben, für das der Export sehr lange dauert, müssen Sie im Windows Explorer (Datei> Eigenschaften> Größe) überprüfen, ob die Dateien noch heruntergefahren werden denke, es ist eingefroren).

Sie müssen sie jetzt einfach mit Windows Explorer in den neuen Zweig kopieren.

Das hat für mich funktioniert:

  • Zuerst die gesamte Lösung auschecken (in der neuen Branche)
  • Schließen Sie diese Lösung
  • TFS von VS aus offline schalten ( Tool, um dies zu tun ) - siehe unten, warum dies wichtig ist ...
  • Kopieren Sie Dateien in Windows Explorer. Die Verzeichnisstruktur in c:\temp\shelveset-name muss umbenannt werden, um dem neuen Zweig zu entsprechen. Tipp: Stellen Sie sicher, dass Sie an die richtige Stelle kopieren !!!
  • VS online bringen
  • Es sollte alle Änderungen finden und die neuen Dateien hinzufügen
  • Wenn Sie dazu aufgefordert werden, das Sourcecontrol zu binden, stellen Sie sicher, dass der Pfad für den neuen Zweig korrekt ist.
  • Testen Sie die neuen Dateien und checken Sie sie ein

Wichtig: Ich habe festgestellt, dass, wenn Sie TFS nicht zuerst offline schalten, am Ende alle neuen Dateien (aus Ihrem deaktivierten Changeset) ohne ein rotes Häkchen angezeigt werden und Sie diese ausschließen und erneut einfügen müssen um sie dazu zu bringen, hinzuzufügen. Wenn jemand eine alternative Lösung für dieses Problem hat, würde ich gerne wissen - das Auffrischen scheint nicht zu funktionieren.

34
Simon_Weaver

Die Regalinformationen enthalten den spezifischen Pfad, zu dem sie gehen. Leider kenne ich keine automatische Methode, um sich an einem anderen Ort als dem, an dem er gelagert wurde, zu entfernen. Die Zeiten, in denen ich dies tun wollte, musste ich die entsprechenden Dateien im neuen Zweig auschecken, den alten Zweig aufheben und die Dateien dann manuell kopieren.

EDIT: Nun, ich schätze, ich habe es auf die harte Tour gemacht. Ich muss Curt's Lösung ausprobieren. :)

1
Herms

Ich habe viel Zeit gebraucht, um dies zu erledigen, und ich hatte nur wenige Probleme zu lösen. Es ist jedoch möglich, hier einige Probleme und wenige Regeln zu beachten, um diese Probleme zu umgehen 

Error:

arbeitsbereich kann nicht bestimmt werden

Dieses spezielle Problem wurde durch Ausführen des Befehls aus dem Stammverzeichnis source branch gelöst. Dies steht im Gegensatz zu einigen Antworten auf SO, in denen sie sagen, dass sie "Ziel" 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"

Die zweite Ausgabe erschien danach. Anscheinend konnte keine Verbindung zum TFS-Server hergestellt werden. Was ich realisiert habe, habe ich mehrere VS installiert und mit verschiedenen TFS-Servern verbunden. Ich verwendete VS12 und hatte Arbeitsbereich und Server-Verbindung. Aber ich wusste 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 TFPT.exe wurde nicht installiert, daher war es unbrauchbar. Also habe ich von TFPT2013 bis TFS2015 versucht und es hat für diesen speziellen Befehl funktioniert. Ich frage mich, warum nicht, wenn VS12/13 gegen TFS2015 funktioniert?

Zusammenfassen

  • Verwenden Sie CMD oder DevCMD - spielt keine Rolle
  • ausführen des Befehls aus dem source branch-Stammverzeichnis
  • Überprüfen Sie die Team Explorer Server-Verbindung für bestimmte VS
  • TF Power Tools 2013 funktioniert gegen TFS v15, mindestens die Option migrate
0
T.S.