如何清除TFS程式碼庫中不再需要的檔案Pending Change和Lock?
公司中人員來來往往,當一個員工離開後,其曾經使用過的TFS workspace還是存在的,這就是為什麼我們在Visual Studio的Source Control Explorer中瀏覽程式碼庫中的檔案時,仍然還能夠看到已離職員工的名字出現在檔案pending change使用者中。
一般情況下,這些無用的workspace不會對正常的工作有啥影響,只是多佔用了一些TFS的儲存空間而已。但是如果這些workspace中存在被鎖的(locked)檔案或資料夾,不解鎖別人就無法開啟。可以由具備許可權的管理員在Source Control Explorer中(或者用tf lock命令)來解鎖這些檔案,但是如果類似的被鎖檔案很多的話,全部解鎖它們將是一件很傷神的體力活。另一種更為高效的解決辦法就是,刪除所有這些不用的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可能不再使用的。下面這些方法可以幫助我們進行判斷:
- TFS Sidekicks工具,它是一款免費軟體,可以列出workspace的資訊資訊;
- tfsclean.exe也是一款免費的小工具,幫助我們查詢和清理不用的workspace;
參考資料