2008-09-22 10 views

Antwort

127

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 

Zum Beispiel ein Regal-Set namens "Shelve Set Name" erstellt auf Branch1 zu Branch2 verwenden diese zu fusionieren:

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

Ooohhh ... Curt, ich glaube, Sie meinen Tag gerade gemacht. Ich werde das später versuchen müssen. – Herms

+0

Wo bekommen Sie die Elektrowerkzeuge her? – Guy

+3

Ja, die Elektrowerkzeuge SOLLTEN Sie dies tun, aber leider die Zusammenführung geht jedes Mal schrecklich falsch, so dass es neben nutzlos ist. –

1

Die Regalinformationen enthalten den spezifischen Pfad, zu dem es geht. Leider kenne ich keinen automatischen Weg, um an einen anderen Ort als den, auf dem er sich befand, zu verzichten. Die Zeiten, in denen ich das tun wollte, musste ich die entsprechenden Dateien in dem neuen Zweig überprüfen, nicht aus dem alten Zweig, dann kopieren Sie die Dateien manuell.

EDIT: Nun, ich denke, ich tat es auf die harte Tour. Ich muss Curts Lösung ausprobieren. :)

34

Alternative Lösung manuell TFPT, dass jede Datei wird vermieden, fusionieren

Das Problem mit dem tfs-Werkzeug ist you're doing a 'baseless merge' so have to confirm every file. Ich hatte ein Shelveset von über 800 Dateien und ich traue nie dem 'Auto Merge' Button und wollte nicht jede Datei einzeln durchlaufen - also musste ich einen anderen Weg finden!

  • Laden Sie die TFS Shelveset Sidekick herunter und installieren Sie sie.
  • Das Tool erscheint unter ‚Extras‘ in VS2010
  • Führen Sie das ‚Shelveset Handlanger‘ Tool, klicken Sie auf Suchen shelvesets
  • Rechts zeigen, auf dem Shelveset klicken und wählen Sie
  • Speichern ‚Export Shelveset‘ auf eine leere Stelle wie C:\temp\shelveset-name
  • jetzt nur noch eine komplette Verzeichnisstruktur haben die neuen Dateien

(Hinweis enthält: Es gibt keine Fortschrittsbalken beim Export - also, wenn Sie eine große Shelveset haben, die eine lange ti nimmt Zum Exportieren müssen Sie nur im Windows Explorer nachsehen (Datei> Eigenschaften> Größe), dass die Dateien immer noch herunterkommen, wenn Sie glauben, dass sie eingefroren ist.

Sie müssen sie nur noch in den neuen Zweig mit Windows Explorer kopieren.

Das ist für mich gearbeitet:

  • zuerst die gesamte Lösung Checking out (in der neuen Niederlassung)
  • schließt diese Lösung
  • aus VS Nehmen TFS offline (Tool to do this) - siehe unten für Warum ist das wichtig?
  • Dateien im Windows Explorer kopieren. Die Verzeichnisstruktur in c:\temp\shelveset-name muss umbenannt werden, um der neuen Verzweigung zu entsprechen. Tipp: Stellen Sie sicher, dass Sie an den richtigen Platz kopieren !!!
  • Bringt VS Online
  • Es alle Änderungen finden sollten und die neuen Dateien
  • hinzufügen Wenn Sie die Sourcecontrol sicher sein, zu binden, stellt, ist für den neuen Zweig korrekt den Pfad zu überprüfen.
  • Test - und checkin dann die neuen Dateien

Wichtig: Ich habe festgestellt, dass, wenn Sie nicht zuerst tun TFS offline nehmen dann werden Sie mit neuen Dateien am Ende (von Ihrem unshelves changeset) zeigt ohne ein kleines rotes Häkchen und du musst sie ausschließen und erneut hinzufügen, um sie hinzuzufügen. Wenn jemand eine alternative Lösung für dieses Problem hat, würde ich gerne wissen - erfrischend scheint nicht zu funktionieren.

+0

Diese Methode ist einfacher für größere Regale und ist die, die ich befolgte. Vielen Dank! – Ani

+0

Diese Methode ist wirklich besser für größere Shelvesets – Aamir

+0

Nun, Sie können wegkommen, ohne TFS offline zu nehmen. Aber ich bin mir nicht sicher, ob es das wert ist. Was ich getan habe, war, die Compare-Aktion auszuführen - im Source Control Explorer über das Kontextmenü im entsprechenden Ordner. Man kann die Ausgabe filtern, um nur die Elemente anzuzeigen, die unterschiedlich sind. Dann können Sie eine Mehrfachauswahl an ihnen vornehmen und alle gleichzeitig auschecken. Aber ich denke TFS offline zu nehmen ist schneller und einfacher als das. – mark

Verwandte Themen