您的位置:首页 > 其它

VSTS强制删除死锁项

2010-07-20 13:47 253 查看
前两天公司的源代码管理从基于文件模式的Visual Source Safe迁移到了Team Foundation Server 2010 Beta 2,当然,客户端还都是基于Visual Studio 2008的,毕竟2010还处于Beta阶段,用于实际项目还是有风险的。

在刚开始使用的时候,早晨了有些文件的死锁(应该属于VSTS的一些问题),但是VSTS并没有提供像VSS一样的界面话的操作,比如使用管理员身份登录后直接解除锁定,大概是基于每一个用户都会有一个Workspace的缘故吧。

由于VSTS是基于数据库存储的,因此,直接干掉数据库中的数据应该是解决的最直接办法。

大体的解决步骤如下:

1、连接到TFS的数据库服务器,一般情况下每一个Project都会有一个单独的数据库,找到tfsversioncontrol库;

2、查找tbl_workspace表,找出相应的工作目录,比如 select * from tbl_workspace where workspacename=’用户名’,这里有可能会出现一个用户对应多个的问题,原因是同一用户在不同的机器上如果有登录的话,那么VSTS会给这个用户单独的Workspace名称,因此也会出现多个;这里可以直接删掉多余的或者无效的,然后这里记录一下搜到的关于workspaceid;

3、利用上一步查到的workspaceid在tbl_pendingchange表中找到尚未签入的项,如: select * from tbl_pendingchange where workspaceid=’workspaceid’,然后将这些内容全部干掉;

4、检查一下tbl_lock表中有没有被锁定的数据,并全部干掉。

这个问题大概在所有的VSTS,不仅仅是2010 Beta中,貌似这个图形化的操作一直没有得到实现,简单的方法可以写一个单独的管理程序,原理无非就是查找相关数据库中是否有相关的数据然后删除就可以。相信在用户体验上有很大提高的VSTS新产品,会在RC中解决这个问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: