公司中人员来来往往,当一个员工离开后,其曾经使用过的TFS workspace还是存在的,这就是为什么我们在Visual Studio的Source Control Explorer中浏览代码库中的文件时,仍然还能够看到已离职员工的名字出现在文件pending change用户中。
一般情况下,这些无用的workspace不会对正常的工作有啥影响,只是多占用了一些TFS的存储空间而已。但是如果这些workspace中存在被锁的(locked)文件或文件夹,不解锁别人就无法打开。可以由具备权限的管理员在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