有人离开了组织,但在离开之前,他出于一个未知原因锁定了所有文件。
如何解锁所有这些以便其他开发人员可以工作?
答案 0 :(得分:55)
对于以下操作,如果要在所有项目中执行此操作,则需要成为要撤消签入的项目的项目管理员或Team Foundation Administrator。
如果您仍然拥有此人的用户名,则可以执行以下操作:
锁定/锁定:无 /工作区:工作区名; USERNAME / recursive $ /
要获取用户的工作区列表,只需从同一提示符运行以下命令:
tf workspaces / owner:username
有关更多命令,请检查 tf /?
答案 1 :(得分:33)
如果开发人员离开了组织,那么最好的办法是删除他们的工作区。这将为您解锁文件,但也释放服务器上的一些资源。
请参阅我几年前发生在我身上的关于这个主题的博客文章。
http://www.woodwardweb.com/vsts/unlocking_files.html
您可以使用命令行(tf.exe)删除工作区,也可以使用Attrice中的优秀TFS Sidekicks。
答案 2 :(得分:7)
这是我解决此问题的唯一方法,其中包括删除用户的工作区:
http://2toad.com/Blog/2012/1/27/how-to-manage-tfs-workspaces
如果错误消息显示“项目$ / ...已被某些用户检查失败:工作区someMachine123中的某些用户:1”。然后我使用命令:
tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1
收集网址与someMachine123;someUser:1
之间只有一个空格。
请注意,我注意到错误消息将用户称为someUser:1
,因此我在命令中模仿了这一点。仅使用someUser
运行命令是不够的。我不确定:1是什么,但指向存在,模仿错误信息。
请注意,服务器必须是完全限定的收集路径,您可以通过转到Team Foundation Server管理控制台 - >应用程序层 - >团队项目集合找到它,底部窗格将显示该集合的URL在上部窗格中选中。
我也遇到了问题,因为我偶然尝试使用复数workspaces
而不是workspace
,因为有一个类似的复数命令。
答案 3 :(得分:6)
首先你需要有权这样做。如果你有最简单的方法是使用attrice http://www.attrice.info/cm/tfs/
中的TFS sidekicks答案 4 :(得分:1)
我需要添加/ collection:collectionURL否则无法找到工作区:
tf loc / lock:none / workspace:WorkspaceName; UserName / collection:collectionURL
答案 5 :(得分:0)
Here's使用TFS权限的说明。
拥有“解锁其他用户的更改” 权限设置为允许是必需的 删除其他用户持有的锁。
答案 6 :(得分:0)
请系统管理员重置该用户密码,以该用户身份登录,解锁所有文件......
我认为这是解决几乎所有'不再是这个组织'问题的人......
答案 7 :(得分:0)
最好从服务器中删除该用户的工作区。示例强>
tf workspace / delete / server:your_tfs_server workspace; username
答案 8 :(得分:0)
有时这会掩盖一个不同的问题,一个完全不同的应用程序被另一个用户锁定,但你甚至无法为你希望合并到的新项目创建一个新文件夹(目标不允许创建并错误地说明有人在他们的名字中锁定了一个文件,但随后你深入挖掘,另一个项目是罪魁祸首。
因此,一个完全不同的项目可能会导致其他人锁定文件。
答案 9 :(得分:0)
对我有效的方法,我的帐户对 TFS 和项目具有管理员权限:
在Visual Studio 2015中:
现在,每个开发人员都可以轻松地进行更改:)
答案 10 :(得分:-3)
使用此解决方案作为最后的手段。
我正在使用TFS 2012.我访问了TFS数据库并运行了以下查询。它奏效了! 当弄乱数据库,进行备份等时,要非常小心。
数据库名为 Tfs_<< your_TFS_collection_name>> 。忽略 Tfs_Configuration MSSQL数据库。我不确定,但如果您没有 Tfs_<< your_TFS_collection_name>> 数据库,则设置可能位于 Tfs_DefaultCollection 数据库中。锁存储在 tbl_PendingChange.LockStatus 中。
/*Find correct row*/
SELECT LockStatus, PendingChangeId, *
FROM tbl_PendingChange
WHERE TargetServerItem like '%<<fileName>>%'
/*Set lock status to NULL (mine was set to 2 initially)*/
UPDATE tbl_PendingChange SET LockStatus = NULL WHERE
TargetServerItem like '%<fileName>>%'
AND PendingChangeId = <<PendingChangeId from above>>