公司中人員來來往往,當一個員工離開后,其曾經使用過的TFS workspace還是存在的,這就是為什么我們在Visual Studio的Source Control Explorer中瀏覽代碼庫中的文件時,仍然還能夠看到已離職員工的名字出現在文件pending change用戶中。
一般情況下,這些無用的workspace不會對正常的工作有啥影響,只是多占用了一些TFS的存儲空間而已。但是如果這些workspace中存在被鎖的(locked)文件或文件夾,不解鎖別人就無法打開??梢杂删邆錂嘞薜墓芾韱T在Source Control Explorer中(或者用tf lock命令)來解鎖這些文件,但是如果類似的被鎖文件很多的話,全部解鎖它們將是一件很傷神的體力活。另一種更為高效的解決辦法就是,刪除所有這些不用的workspace。例如,在下面例子中,corp\jeff是公司中一名已經離職的員工的域賬號,可以使用tf workspaces和tf workspace命令來找出其在TFS上擁有的所有workspace,然后一一清除它們。
tf workspaces /owner:corp\jeff
Collection: shanghaitfs\DefaultCollection
Workspace Owner Computer Comment
--------------- -------- --------------- ---------------------------
STICKER Jeff JEFF-STICKER
STICKER1 Jeff JEFF-STICKER
DEV01 Jeff JEFF-EV01
WIN2008 Jeff JEFF-WIN2008
NOTEBOOK Jeff JEFF-NOTEBOOK
WIN7 Jeff JEFF-WIN7
上一步列出了corp\jeff在TFS collection : shanghaitfs\defaultcollection上所擁有的所有workspace(tf workspaces命令允許使用/collection來指定collection,這里使用的默認的當前workspace的collection), 接下來使用tf workspace /delete命令就可以逐一清除掉它們了。
tf workspace /delete Sticker;corp\jeff
A deleted workspace cannot be recovered.
Workspace 'Sticker;corp\jeff' on server 'http://shanghaitfs:8080/tfs/defaultcollection' has 87 pending change(s). Are you sure you want to delete the workspace? (Yes/No) Y
注意:要刪除其他人的workspace,你必須具有“Administrator workspaces”權限,更多有關TFS權限的內容,請參見Team Foundation Server Permissions. 此外,tf workspace /remove是另外一個刪除workspace的命令,區別在于/remove只是刪除本地cache中的條目,而不是TFS服務器端的workspace。
其實在日常TFS使用中,刪除不用的workspace不應該只是針對離職的員工。因為大家會經常創建workspace, 但實際上幾乎沒有人會意識到在不使用workspace后要去刪除它。日積月累,TFS上會堆積有大量不用的workspace。TFS的管理員應該定期提醒在職員工自己清楚掉自己長期不使用的workspace, 這對于服務于幾百或者上千人的TFS服務器來說還是很必要。例如,下面的命令列出指定server上的所有workspace。
tf workspaces /owner:* /computer:* /server:http://shanghaitfs:8080/tfs/defaultcollection
(2011/4/10更新) 雖然tf workspaces可以列出所有workspace,但是列出的信息中并沒有包括workspace的最后訪問時間,所以不足以幫助TFS管理員判斷出哪些workspace可能不再使用的。下面這些方法可以幫助我們進行判斷:
1.TFS Sidekicks工具,它是一款免費軟件,可以列出workspace的信息信息;
2.tfsclean.exe也是一款免費的小工具,幫助我們查找和清理不用的workspace;
3.最后一種途徑就是編寫你自己的工具,TFS Client Object Model API提供了VersionControlServer.QueryWorkspaces()函數,用于獲取并返回Workspace對象數組。而該對象中就包含了- LastAclearcase/" target="_blank" >ccessDate屬性
本文轉自:http://blog.ltesting.net/quicknet