{"id":247,"date":"2008-05-29T19:02:42","date_gmt":"2008-05-29T17:02:42","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=247"},"modified":"2008-05-28T08:25:24","modified_gmt":"2008-05-28T06:25:24","slug":"tipps-trickstfs-undo-checkout-fuer-einen-anderen-anwenderworkspace-erzwingen","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2008\/05\/29\/tipps-trickstfs-undo-checkout-fuer-einen-anderen-anwenderworkspace-erzwingen\/","title":{"rendered":"Tipps &#038; Tricks:TFS Undo Checkout f\u00fcr einen anderen Anwender\/Workspace erzwingen\u2026"},"content":{"rendered":"<p>F\u00fcr <em>VSS <\/em>hatte ich das entsprechende Vorgehen ja bereits unter diesem Artikel beschrieben: <a title=\"Permanent Link: VSS Undo Checkout f\u00fcr einen Anwender den es nicht mehr gibt\u2026\" rel=\"bookmark\" href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/07\/09\/vss-undo-checkout-fuer-einen-anwender-den-es-nicht-mehr-gibt\/\">VSS Undo Checkout f\u00fcr einen Anwender den es nicht mehr gibt\u2026<\/a>.<\/p>\n<p>W\u00e4hrend es im <em>VSS <\/em>nur eine Reaktionm\u00f6glichkeit hatte gibt es beim Arbietenmit dem <em>Team Foundation Server <\/em>gleich mehrere Szenarien und M\u00f6glichkeiten der Reaktion:<\/p>\n<ul>\n<li>Ein Checkout muss r\u00fcckg\u00e4ngig gemacht werden, weil ein anderer Benutzer einen exklusiven Checkout durchgef\u00fchrt hat, dieser aber selbst nicht erreichbar ist.<\/li>\n<li>oder man m\u00f6chte nur den Checkout Lock zur\u00fccksetzen oder lockern und nicht den gesamten Checkout r\u00fcckg\u00e4ngig machen<\/li>\n<li>oder ein Mitarbeiter hat die Firma verlassen und alle\u00a0entsprechenden Checkouts m\u00fcssen zur\u00fcckgerollt werden.<\/li>\n<\/ul>\n<p>Zu jedem dieser Vorg\u00e4nge gibt es eine spezielle Operation im <em>TFS<\/em>. Alle Operationen setzen voraus, dass man in dem entsprechenden Projekt administrative Rechte hat und alle Befehle m\u00fcssen von der Befehlszeile aus eingegeben werden \u00fcber <em>TF.EXE<\/em>.<\/p>\n<p>Das mit diesen Befehlen nicht leichtfertig umgegangen werden sollte versteht sich hoffentlich von selber \u2757<\/p>\n<ol>\n<li>Der Undo des Checkouts kann durch den folgenden Befehl erreicht werden:<br \/>\n<strong><em>tf undo \/workspace:BenutzerWorkspace;Benutzer $\/Projekt\/DateiName.cpp<br \/>\n<\/em><\/strong><a href=\"http:\/\/msdn.microsoft.com\/de-de\/library\/c72skhw4\">http:\/\/msdn.microsoft.com\/de-de\/library\/c72skhw4<\/a><\/li>\n<li>Als Administrator hat man aber auch die M\u00f6glichkeit jede Form von Locks eines anderen Anwenders zu \u00e4ndern. Das geschieht \u00fcber die Befehlszeile mit:<br \/>\n<strong><em>tf lock \/lock:none $\/Projekt\/Dateiname.cpp<br \/>\n<\/em><\/strong><a href=\"http:\/\/msdn.microsoft.com\/library\/47b0c7w9\">http:\/\/msdn.microsoft.com\/library\/47b0c7w9<\/a><\/li>\n<li>Als letzter Holzhammer steht es einem Administrator offen einen Workspace eines Anwenders zu l\u00f6schen. Dies l\u00f6scht nat\u00fcrlich nicht die lokalen Dateien des Workspaces, f\u00fchrt aber dazu, dass alle Checkouts und alle Locks r\u00fcckg\u00e4ngig gemacht werden. Diese letzte Methode eignet sich besonders daf\u00fcr, die Daten ausgeschiedener Mitarbeiter aus dem TFS zu entfernen.<br \/>\n<strong><em>tf workspace \/delete WorkspaceName;DOMAIN\\Benutzer<br \/>\n<\/em><\/strong><a href=\"http:\/\/msdn.microsoft.com\/library\/y901w7se\">http:\/\/msdn.microsoft.com\/library\/y901w7se<\/a><\/li>\n<\/ol>\n<p>Evtl. muss noch mit der Option \/s der Servername angegeben werden. Im Allgemeinen ist dies aber nicht notwendig. F\u00fcr keinen der oben genannten Befehle ist muss man an den entsprechenden Rechner mit dem\u00a0 betreffenden Workspace gehen um diese Befehle durchzuf\u00fchren. Gerade das ist ja oft nicht m\u00f6glich.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcr VSS hatte ich das entsprechende Vorgehen ja bereits unter diesem Artikel beschrieben: VSS Undo Checkout f\u00fcr einen Anwender den es nicht mehr gibt\u2026. W\u00e4hrend es im VSS nur eine Reaktionm\u00f6glichkeit hatte gibt es beim Arbietenmit dem Team Foundation Server gleich mehrere Szenarien und M\u00f6glichkeiten der Reaktion: Ein Checkout muss r\u00fcckg\u00e4ngig gemacht werden, weil ein &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2008\/05\/29\/tipps-trickstfs-undo-checkout-fuer-einen-anderen-anwenderworkspace-erzwingen\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTipps &#038; Tricks:TFS Undo Checkout f\u00fcr einen anderen Anwender\/Workspace erzwingen\u2026\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,32,27,31],"tags":[372,42,36,44],"class_list":["post-247","post","type-post","status-publish","format-standard","hentry","category-programmieren","category-tfs","category-vs2008","category-vs-tipps-tricks","tag-tfs","tag-tippstricks","tag-vs-2005","tag-vs-2008"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}