你做什么,如果该文件在TFS被锁定通过其他人吗?
-
06-07-2019 - |
题
有人离开本组织,但在离开之前,他把所有的文件为未知的原因。
你怎么解开他们所有的使其他开发商可以工作?
解决方案
以下操作的,你会需要一个项目管理员的项目你想撤销登记或一个团队的基础管理员如果你想这样做的所有项目。
如果你仍然有的用户名的人,你可以简单地做这样的事情:
- 打开Visual Studio命令提示(开>方案-->Visual Studio200X->Visual Studio工具-->Visual Studio200X命令提示)
- 运行以下命令:
tf锁/锁:无 /工作空间:WorkspaceName;的用户名 /递归$/
要获得该名单的工作空间为用户,只是运行以下命令从同一个提示:
tf工作区/拥有者:用户名
更多的命令,检查 tf/?
其他提示
如果开发人员离开了组织,那么最好的办法是删除他们的工作区。这将为您解锁文件,但也释放服务器上的一些资源。
请参阅我几年前发生在我身上的关于这个主题的博客文章。
http://www.woodwardweb.com/vsts/unlocking_files.html
您可以使用命令行(tf.exe)删除工作区,也可以使用优秀的来自Attrice的TFS Sidekicks 。
这是我解决此问题的唯一方法,其中包括删除用户的工作区:
http://2toad.com/Blog/一分之二千〇一十二/ 27 /如何管理的-TFS的工作区
如果错误消息显示<!>“;项目$ / ...被某些用户:工作区someMachine123中的someUser:1锁定以进行结账。<!> quot;然后我使用命令:
tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1
收集网址与someMachine123;someUser:1
之间只有一个空格。
请注意,我注意到错误消息将用户称为someUser:1
,因此我在命令中模仿了这一点。仅使用someUser
运行命令是不够的。我不确定:1是什么,但指向存在,模仿错误信息。
请注意,服务器必须是完全限定的收集路径,您可以通过转到Team Foundation Server管理控制台 - <!> gt;应用程序层 - <!> gt;团队项目集合,底部窗格将显示在上部窗格中选择的集合的URL。
我也遇到了问题,因为我不小心尝试使用复数workspaces
而不是workspace
,因为有一个类似的复数命令。
首先你需要有权这样做。如果你有最简单的方法是使用attrice的TFS sidekicks http://www.attrice.info/厘米/ TFS /
我需要加入/收集:collectionURL否则的工作区就不可能发现:
- 列项目
tf loc/锁:无/工作空间:WorkspaceName;UserName/收集:collectionURL
这是使用TFS权限的说明。
拥有<!>“解锁其他用户的更改<!>”; 权限设置为允许是必需的 删除其他用户持有的锁。
请系统管理员重置该用户密码,以该用户身份登录,解锁所有文件......
我认为这是解决几乎所有'不再是这个组织'问题的人......
最好从服务器中删除该用户的工作区。示例强>
tf workspace / delete / server:your_tfs_server workspace; username
有时这会掩盖一个不同的问题,一个完全不同的应用程序被另一个用户锁定,但你甚至无法为你希望合并到的新项目创建一个新文件夹(目标将不允许创建并错误地说明有人在他们的名字中锁定了一个文件,但随后你深入挖掘,另一个项目是罪魁祸首。
因此,一个完全不同的项目可能会导致其他人锁定文件。
对我有用的方法,我的帐户拥有 TFS 和项目的管理员权限:
在Visual Studio 2015中:
- 转到团队资源管理器
- 点击解决方案的右侧,然后选择在源代码管理中打开 Explorer的强>
- 在左侧单击解决方案右侧
- 选择高级
- 选择锁定
- 在左侧单击解决方案右侧
- 选择高级
- 选择解锁(现在您可以选择解锁) 醇>
现在,每个开发人员都可以轻松地进行更改:)
使用此解决方案作为最后的手段。
我<!>#8217; m使用TFS 2012.我去了TFS数据库并运行了以下查询。它奏效了! 当弄乱数据库,进行备份等时,要非常小心。
数据库名为 Tfs _ <!> lt; <!> lt; your_TFS_collection_name <!> gt; <!> gt; 。忽略 Tfs_Configuration MSSQL数据库。我不确定但是如果你没有 Tfs _ <!> lt; <!> lt; your_TFS_collection_name <!> gt; <!> gt; 数据库,设置可能在< em> 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>>