如果TFS中的文件被其他人锁定,您该怎么办?

64

有人离开了公司,但在离开前出于未知原因锁定了所有文件。

如何解锁它们以便其他开发人员可以工作?

12个回答

61

执行以下操作时,您需要成为要撤消检入的项目的项目管理员或者如果想在所有项目中执行此操作,则需要成为Team Foundation管理员。

如果您仍然知道该人员的用户名,可以简单地执行以下操作:

  • 打开Visual Studio命令提示符(开始菜单->程序->Microsoft Visual Studio 200X->Visual Studio工具->Visual Studio 200X命令提示符)
  • 运行以下命令:

tf lock /lock:none /workspace:WorkspaceName;USERNAME /recursive $/

要获取用户的工作区列表,请从同一个提示符下运行以下命令:

tf workspaces /owner:username

有关更多命令,请查看tf /?


我如何使用不同的凭据来完成这个任务? - Peet Brits
3
让我来改一下表述。我使用命令 tf lock /lock:none /login:... /workspace:... <filename>,但是它返回了一个错误:“必须保持锁定状态,因为该文件类型防止多次签出”。 - Peet Brits
8
没关系,我通过Martin的回答中的tf undo命令解决了它。 - Peet Brits
1
我遇到了类似的问题,但你建议使用tf.exe进行递归解锁并没有起作用。(我没有收到任何警告,它只是没有解锁文件。)我安装了Sidekicks,并能够使用Status Sidekick撤销锁定。因为开发人员正在度假,我不想删除工作区或撤消检出。 - Mary Hamlin
1
谢谢Max!过去的你再次帮了我一次忙! - Alexandre Brisebois
也许有用(重复?)https://dev59.com/03I-5IYBdhLWcg3wwbVL - Kiquenet

36

如果开发人员已经离开组织,最好的做法是删除他们的工作区。这将为您解锁文件,也会释放服务器上的一些资源。

请参阅我在几年前遇到此问题时所写的以下博客文章。

http://www.woodwardweb.com/vsts/unlocking_files.html

您可以使用命令行(tf.exe)删除工作区,也可以使用Attrice的优秀TFS Sidekicks


1
+1。这个方法可行,而删除工作区由于权限不足而无法执行,尝试解锁文件时出现错误。 - djskinner
问题是Sidekick没有显示另一个用户有待处理的检查。但命令行中的tf也没有显示。结果发现那个人试图checkin,但失败了。然后就把它留下了。所以我再次将其添加到源代码中,当我尝试checkin时,一些文件已经checkin了,但其他文件没有。真是一个非常愚蠢的情况。他不得不在他的机器上撤消操作来解决这个问题,即使我删除了他的TFS工作空间。 - Piotr Kula
它可以工作,但要小心。如果你正在处理自己的多个工作区,你需要知道你将会失去已删除工作区的更改权限。 - Niklas

8

这是我解决这个问题的唯一方法,需要删除用户的工作区。

如果错误信息显示为“项目 $/...在某个机器123的工作区中被someUser:1锁定以进行签出”,那么我使用以下命令:

tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1

在收集URL和someMachine123;someUser:1之间只有一个空格。

请注意,我关注了错误消息中将用户命名为someUser:1的事实,因此我在命令中模仿了这一点。仅使用someUser运行命令是不够的。我不确定:1是什么意思,但要点是,要模仿错误消息。

请注意,服务器必须是完全限定的收集路径,您可以通过转到Team Foundation Server管理控制台->应用程序层->团队项目集合来找到该路径,底部窗格将显示所选上窗格中的收集的URL。

我还遇到了一个问题,因为我不小心尝试使用复数的workspaces而不是只是单数的workspace,因为有一个类似的复数命令。


7

首先,您需要有执行此操作的权限。如果您拥有该权限,则最简单的方法是使用来自attrice的TFS Sidekicks http://www.attrice.info/cm/tfs/


1
是的,您可以使用“状态副手”解锁文件。对我有用。 - Mary Hamlin

1

我需要添加/collection:collectionURL,否则工作区无法找到:

  • 列表项

tf loc /lock:none /workspace:WorkspaceName;UserName /collection:collectionURL


这很正常。我当时使用的版本没有集合。 - Maxime Rouiller

1

这里有一个关于如何使用TFS权限的解释。

必须将“解锁其他用户的更改”权限设置为允许,才能删除由其他用户持有的锁定。


0

有时候,这个问题可能是掩盖了另一个不同的问题,即完全不同的应用程序被其他用户锁定了,但您甚至无法为您希望合并到其中的新项目创建一个新文件夹(目标不允许创建并错误地声明某人已经在他们的名称下锁定了文件),但随后您深入挖掘,发现还有另一个项目是罪魁祸首。

因此,完全不同的项目可能会出现由他人锁定文件的问题。


0

最好从服务器上删除该用户的工作区。例如:

tf workspace /delete /server:your_tfs_server workspace;username


0

请系统管理员重置该用户的密码,以该用户身份登录,解锁所有文件...

我认为这几乎是所有“已不在此组织中”的问题的解决方案...


这是最好的无懈可击的解决方案...不总是可行,但是最好的解决方案 ;) - Barrie Reader
1
不幸的是,如果他们已经删除了他们的域帐户,通常这不是一个选项。 - AaronLS

0

通过使用TFS权限, 打开Visual Studio命令提示符,运行以下命令:

tf undo /workspace:workspaceName;DomainName\UserName  $/file path in your solution

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接