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


105

Nehmen wir an, ein Entwickler in meinem Team hat seine Änderungen in Zweig A zurückgestellt. Und ich arbeite an Zweig B. Kann ich seine Änderungen in Zweig B aufheben? (Über GUI oder Eingabeaufforderung)


Demo des obigen Befehls: Unshelve Befehlsgrundlagen
Rohit

Antworten:


129

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/"

2
Ooohhh ... Curt, ich denke du hast gerade meinen Tag gemacht. Ich werde das später versuchen müssen.
Herms

Woher bekommen Sie die Elektrowerkzeuge?
Guy

3
Ja, die Elektrowerkzeuge sollten dies zulassen, aber leider geht die Zusammenführung jedes Mal schrecklich schief, so dass sie so gut wie nutzlos ist.
Tim Booker

Die Zusammenführung ist nicht so schlimm. Ich habe festgestellt, dass die automatische Zusammenführung in 90% der Fälle funktioniert.
Justin Rudd

2
Ich habe es gerade versucht. Ich habe viele Dateien innerhalb des Regalsatzes verschoben und leider scheint dies nicht gut zu funktionieren. Sie müssen alle diese Dateien manuell "migrieren" (es gibt auch keine Mehrfachauswahl). Anschließend werden sie dem Arbeitsbereich als neue Dateien hinzugefügt. Ich kann es nicht verwenden, weil ich es nicht mehr zusammenführen kann.
Stefan Steinegger

34

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!

  • 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 Regale anzuzeigen
  • Klicken Sie mit der rechten Maustaste auf Ihr Regal und wählen Sie "Regal exportieren".
  • Speichern Sie an einem leeren Ort wie z C:\temp\shelveset-name
  • Haben Sie jetzt eine vollständige Verzeichnisstruktur, die NUR die neuen Dateien enthält

(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:

  • Überprüfen Sie zuerst die gesamte Lösung (in der neuen Niederlassung).
  • Schließen Sie diese Lösung
  • Schalten Sie TFS in VS offline ( Tool, um dies zu tun ) - siehe unten, warum dies wichtig ist ...
  • Kopieren Sie Dateien im Windows Explorer. Die Verzeichnisstruktur in c:\temp\shelveset-namemuss umbenannt werden, um dem neuen Zweig zu entsprechen. Tipp: Stellen Sie sicher, dass Sie an die richtige Stelle kopieren !!!
  • Schalten Sie VS online
  • Es sollte alle Änderungen finden und die neuen Dateien hinzufügen
  • Wenn Sie aufgefordert werden, die Quellcodeverwaltung zu binden, stellen Sie sicher, dass der Pfad für den neuen Zweig korrekt ist.
  • Testen - und dann die neuen Dateien einchecken

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.


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

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

Nun, Sie können davonkommen, ohne TFS offline zu schalten. Aber ich bin mir nicht sicher, ob es sich lohnt. Ich habe die Aktion "Vergleichen" ausgeführt - im Versionsverwaltungs-Explorer über das Kontextmenü, das im entsprechenden Ordner geöffnet ist. Man kann die Ausgabe filtern, um nur die Elemente anzuzeigen, die unterschiedlich sind. Dann können sie mehrfach ausgewählt und alle gleichzeitig ausgecheckt werden. Aber ich denke, TFS offline zu schalten ist schneller und einfacher.
Markieren Sie

Leider funktioniert dies bei mir nicht, wenn ich Änderungen im Regalsatz "hinzugefügt" habe. Ich erhalte die Fehlermeldung "Fehler beim Abrufen der zurückgestellten Datei. Eine ausstehende Änderung einer Datei ist erforderlich".
John Saunders

@ JohnSaunders meinst du ein Regalset mit irgendwelchen Ergänzungen oder exklusiven Ergänzungen ? Ich musste das seit Jahren nicht mehr tun :)
Simon_Weaver

1

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. :) :)


0

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

  • Verwenden Sie CMD oder DevCMD - spielt keine Rolle
  • Befehl ausführen Quellzweigstammordner
  • Überprüfen Sie die Team Explorer Server-Verbindung für bestimmte VS
  • TF Power Tools 2013 arbeiten mit TFS v15, zumindest funktioniert die Migrationsoption

0

Die folgenden Schritte können für kleine Regale (~ 20 Dateien oder weniger) verwendet werden.

  1. Beginnen Sie in den Regalen und Zielzweigen damit, dass alle ausstehenden Aktualisierungen eingecheckt oder zurückgesetzt werden.
  2. Lösen Sie im Shelveset-Zweig die Verknüpfung der Dateien mit dem entsprechenden Shelveset.
  3. Überprüfen Sie im Zielzweig alle vorhandenen Dateien, die sich im nicht eingebetteten Regalsatz befanden.
  4. Vergleichen Sie die nicht unterstützten Dateien im Shelveset-Zweig mit denen im Zielzweig, um die Dateien zu identifizieren, für die Zusammenführungsaktualisierungen erforderlich sind (falls vorhanden).
  5. Führen Sie bei Bedarf manuell Zusammenführungsaktualisierungen für die entsprechenden Dateien des vorherigen Schritts durch und speichern Sie diese Dateien im Arbeitsbereich des Zielzweigs.
  6. Kopieren Sie die anderen Shelveset-Dateien aus dem Shelveset-Zweigarbeitsbereich in den Zielzweigarbeitsbereich.
  7. Vergleichen Sie die neuen aktualisierten Dateien im Arbeitsbereich des Zielzweigs mit den eingecheckten Dateien. Nehmen Sie die erforderlichen Korrekturen vor.
  8. Checken Sie die neuen aktualisierten Dateien im Zielzweig ein.
  9. Führen Sie ein Rollback der nicht unterstützten Dateien im Regalsatzzweig durch.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.