2010-02-24 9 views
45

Hier ist der Teil, den ich bekomme: Wenn Sie in TFS ablegen, macht es eine Serverkopie der Änderungen, so dass sie nicht verloren gehen, aber sie nicht in den Quellcode Stamm/Zweig überprüfen, an dem Sie arbeiten.Unshelving in TFS: Was bedeutet es?

Frage: Unter welchen Umständen würden Sie die Funktion "Unshelve" verwenden? Bedeutet es, dass das Shelveset vom TFS-Server entfernt wird? Kannst du aus einem Regal herauskommen? Oder ist es wirklich nur eine Diff-Beschreibung zwischen dem Shelveset und dem "echten" Quellcode?

Antwort

51

Unsicher ist, wie Sie das Shelveset auf Ihrem Computer wiederherstellen, damit Sie weiter daran arbeiten können. Es ändert nicht das Shelveset auf dem Server (dazu müssen Sie die Dinge erneut ablegen und den gleichen Shelveset-Namen verwenden).

Ein Beispiel dafür, wie ich es benutze, ist das Verschieben von Änderungen zwischen den Maschinen, während ich daran arbeite. Ich werde es auf meinem Desktop-Rechner abstellen, dann lege ich es auf dem Laptop ab und arbeite dann weiter am Laptop.

Sie können es auch verwenden, um Änderungen mit jemandem zu teilen (für Codeüberprüfungen oder andere Gründe). Du legst deine Änderungen zurück, dann kann die andere Person gehen und sie loslassen, um zu sehen, was du getan hast.

Unshelving ändert nicht wirklich das Shelveset oder irgendetwas anderes auf dem Server. Es ist nur eine Operation.

+1

Ein Kollege schickt mir eine Rezension, ich nehme seine Änderungen nicht, um sie auszuführen und zu überprüfen. Sobald ich fertig bin und seine Bewertung zurückschicke. Wie werde ich seine Änderungen los? Mit anderen Worten, wie mache ich das Unsagbare rückgängig? Muss ich auf jede der Dateien, die er geändert hat, mit der rechten Maustaste klicken und diese rückgängig machen? – Ciwan

+0

@Ciwan, Sie müssen Ihren Code zurückstellen, bevor er seins nicht unterstützt. Wenn du mit seinem fertig bist, gib deinen Code nicht frei. – David

30

Herms ist genau richtig. Lesen Sie seine Antwort.

Eine wichtige Einschränkung: Wenn Sie ein Get getan haben, da die Shelveset erstellt wurde, unshelve wird nur die lokale Version von Dateien Rollback in Shelveset enthalten. Daher ist es sehr wahrscheinlich, dass Sie einen inkonsistenten Arbeitsbereich haben.

Eine gute Praxis ist immer wieder laufen, nachdem Sie unshelve. Dies stellt sicher, dass Sie keine Zeit mit Phantom-Build-Fehlern verschwenden, die eigentlich nur Nebeneffekte eines halb neuen/halb-alten Zustands sind. Außerdem müssen Sie Konflikte zwischen den Inhalten des Regalsatzes und den neuesten Serverversionen proaktiv lösen, anstatt sie nur beim Einchecken zu entdecken.

4

Ich benutze Shelve, um den laufenden Code zu sichern, nur wenn meine Festplatte abstürzt oder was nicht. Ich muss mir nicht einmal Gedanken über den Codeaufbau machen, geschweige denn arbeiten, da die Arbeit von keinem anderen Entwickler in meinem Team gesehen wird (es sei denn, sie suchen danach).

Unshelve speichert die Änderungen in Ihrem Arbeitsbereich. Das Entfernen des Shelvesets vom Server ist ein Löschen.

Im Anschluss an das, was Richard Berg sagte, enthält die Version der Elektrowerkzeuge von uns tatsächlich eine Lösung.

+1

Leider ist 'tfpt unshelve' in meiner Erfahrung sehr fehlerhaft. –

+0

Ich benutze es nicht oft selbst. Es ist einfacher, danach zu machen. Ich würde es in einem Fall verwenden - wenn ich nicht eingecheckten Code zu einem anderen (aber sehr ähnlichen!) Zweig bewegen müsste. – stannius

+0

ist nicht fehlerhaft. Es ist ein Prozess. Wir können nicht erwarten, dass TFS den genauen Code einhält. Aber ich denke, dass tfs seine Arbeit nahe 95% -100% erledigen wird, wenn es sich nicht meldet. – Kurkula