如何删除另一个用户的 TFS 工作区映射
Posted
技术标签:
【中文标题】如何删除另一个用户的 TFS 工作区映射【英文标题】:how to remove TFS workspace mapping for another user 【发布时间】:2015-04-02 15:22:20 【问题描述】:我正在使用 Visual Studio 2010。几个月前,我使用一些“ABC”TFS 用户连接到 TFS 并在我的本地驱动器上映射了一些文件夹。现在我以前的用户 'ABC' 不见了,我被分配了一个新的 tfs 用户 'XYZ' 来连接到 TFS。所以很自然地我尝试将一些远程文件夹映射到我现有的本地文件夹,我得到了以下错误。
“工作文件夹 'Some_Local_Path' 已被计算机 'MACHINE_NAME' 上的工作区 WORKSPACE_NAME:USER_NAME 使用”
我已尝试删除缓存文件夹内容,但出现相同的错误 (C:\UsersUserName\AppData\Local\Microsoft\Team Foundation\3.0\Cache)。 我还尝试运行常见的 TFS 命令 (tf workspaces /remove:*) 来删除所有工作区的缓存,但仍然出现相同的错误。 当我尝试编辑我的工作区时,它显示了我当前用户“XYZ”的源代码管理和本地文件夹,但我想要的是删除我以前的用户“ABC”的文件夹绑定。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:如果您无权访问该帐户,则需要让您的 TFS 管理员删除工作区。
您可以通过指定显式用户调用“tf 工作区”来执行此操作,但您需要“管理其他用户工作区”权限。 TF Sidekicks 使用相同的命令,因此需要相同的权限。它是一个 TFS 管理员生产力工具。
https://msdn.microsoft.com/en-us/library/y901w7se(v=vs.100).aspx
你可以使用:
tf workspace /delete "WORKSPACENAME;PREVIOUSUSERACCOUNT"
【讨论】:
我可以保证,TF Sidekicks 绝对能够通过简单的“工作区”;“所有者”删除所有已发布的命令行。我注意到所有者在 Sidekicks UI 中显示为 guid 字符串......也许这就是秘密 - 因为,当我尝试通过命令行删除时,我得到“不存在”。 在 azure devops 中,删除所需的权限是“管理工作区”【参考方案2】:如果您对集合拥有管理权限,则可以使用位于 Visual Studio\Common7\IDE 目录中的 TF 命令来执行此操作,而无需安装其他工具。
首先列出与用户关联的工作空间:
TF workspaces /collection:"http://tfsserver:8080/tfs/collection_name" /owner:owner_id
这将返回用户拥有的工作区列表以及与之关联的计算机
删除命名工作区:
TF workspace /delete workspacename;owner_id /collection:"http://tfsserver:8080/tfs/collection_name"
【讨论】:
我不能随便删除其他用户的工作区,因为他们留下了一个已签出的文件。 -- 不幸的是,它是一个本地的私有工作区,不知何故,文件仍然被他们锁定...... -- 不过必须有一个命令来解锁它...... 当你删除一个工作区时,不要指定 /collection - 它只有在没有它的情况下才能工作。 为我工作。谢谢!【参考方案3】:我遇到了类似的问题,无法安装 Sidekick,因为我运行的是 VS 2k17。
我无法删除工作区,因为它一直告诉我找不到工作区。
tf workspaces /computer:* /owner:*
这将列出我的所有工作区和所有者。所以我会尝试
tf workspace /delete myWorkSpaceName;Bob Smith
TF14061: The workspace myWorkSpaceName;Bob Smith does not exist.
这是我在上面的原始工作区列表中获得的确切工作区和所有者名称。
解决方案是要求xml格式
tf workspaces /computer:* /owner:* /format:xml > c:\temp\workspaces.xml
(注意:输出到文件是可选的,但建议使用)
这为工作区所有者提供了别名,其中一个是带有 guid 和帐户电子邮件的长名称。这终于奏效了:
tf workspace /delete myWorkSpaceName;aabe3ec12-1254-4956-b1ee-3fb26506931e\bsmith@myDomain.onmicrosoft.com
它要求确认并最终删除了我的孤立工作区。
【讨论】:
这个答案更好,因为它不依赖 3rd 方软件并提供更多洞察力。谢谢拉里G 太棒了!这帮助我的团队畅通无阻! 您指定要删除的命令对我不起作用,但它起作用了:tf workspace /delete /collection:servername:8080/tfs/defaultcollectionworkspacename;domain\username 你得到 - myWorkSpaceName;Bob Smith 工作区不存在 - 因为你的名字包含空格并且必须用引号覆盖。试试这个: tf workspace /delete "myWorkSpaceName;Bob Smith" 我尝试了带引号和不带引号,但无论哪种方式都不起作用。直到我引用了 GUID,我才被允许删除它。【参考方案4】:首先你需要安装TFS Sidekick
(你可以从http://www.attrice.info/cm/tfs/下载它)在安装阶段选择集成IDE模式
然后将在Visual Studio
中添加一个新菜单,如下所示
菜单 -> 工具 -> TeamFoundation Sidekick
然后打开工作区sidekick 搜索 'ABC' 用户,然后你可以删除他的工作空间
【讨论】:
很棒的实用程序,它在没有其他办法的情况下解决了这个问题。感谢您的回答。 @abhijat_saxena 它适用于拥有权限的人,包括管理员 谢谢!很棒的独立应用程序,连接并与 Azure DevOps Server 一起使用。我简直不敢相信有多少死掉的 WorkSpaces 是因为买了新机器等等……【参考方案5】:-
打开
Source Control Explorer
(View->Other Windows->Source Control Explorer
)
在工具栏窗格上会有Workspace
组合。从该组合中选择Workspacess..
Edit
Remove
【讨论】:
要使用此解决方案,OP 需要由无法访问的“ABC”用户登录【参考方案6】:1.首先我们将在 VS 2015 Developer 命令提示符下检查工作区列表,
Ex - tf 工作区 /owner:*
2.现在我们将从 VS 2017 Developer 命令提示符中获取 xml 格式,该格式将具有特定工作区的“所有者 ID”,
示例 1 - tf.exe 工作区 /owner:* /computer:ComputerName /collection:https://YOUR-TFS-URL.visualstudio.com /format:xml
3.我们现在可以删除特定用户的工作区,
示例 1- Tf 工作区 /delete ComputerName;email@email.com /server:"https://URL.visualstudio.com"
或
示例 2 - Tf 工作区 /delete ComputerName;1e178c77-bb8b-6f05-bf99 /服务器:https://URL.visualstudio.com
(其中 1e178c77-bb8b-6f05-bf99 是您从步骤 2 XML 格式获得的工作区 ID)
4.我们将再次从 VS 2015 Developer 命令提示符检查工作区列表,
Ex - tf 工作区 /owner:*
【讨论】:
【参考方案7】:从 TFS 服务器删除工作区的步骤:
打开 Visual Studio 开发人员命令提示符。
转到 Program Files (x86) 文件夹,根据安装的 Visual Studio 选择“Microsoft Visual Studio 12.0”文件夹。在这里,我选择了它,因为我的机器上安装了 Visual Studio 2013。在命令提示符中添加此路径。添加喜欢 "cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE"
注意:如果您可以从网络访问 TFS 服务器,那么您可以在任何安装了 Visual Studio 的机器上尝试它,或者从同一 TFS 机器服务器(如果那里有 Visual Studio)尝试。强>
查看特定集合下的工作区列表。键入以下命令以获取一个集合下的工作区。
cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf 工作区 /server:http://TFSServername:8080/tfs/CollectionName /owner:*
在上述命令中,将 TFSServername 替换为您的 TFS 服务器名或服务器 IP。 在上述命令中,将 CollectionName 替换为实际的 TFS 集合名称。如何删除特定集合下的工作区。检查以下命令是否相同。
tf 工作区 /server:http://TFSServername:8080/tfs//CollectionName /delete “workspacename;owner” 将 workspacename 替换为工作区列表中的“Workspacename”。将 CollectionName 替换为 TFS 集合名称。
例如tf workspace /server:http://TFSServername:8080/tfs//CollectionName /delete Enter Exact Workspacename;Enter ExtactOwnerName
【讨论】:
【参考方案8】:我遇到了同样的问题,在使用 tf delete 命令删除工作区后,我收到了工作区已经映射的错误!然后我发现 tf delete workspace 命令使作业不完整,您还必须按照此处的建议手动将其从缓存中删除:
https://community.dynamics.com/365/financeandoperations/b/dynamicsaxinsightbyanas/posts/d365fo-the-path-is-already-mapped-in-workspace
【讨论】:
(1) OP 已经尝试删除缓存文件夹内容。文章中还有什么可以提供帮助的吗? (2) 直接从引用的链接中复制(摘录)相关信息(因为链接经常会随着时间的推移而中断)。 (3) 请澄清“……下班不完整的烧烤……”。也许您的意思是“......可能会让工作不完整 - 在这种情况下......”谢谢!【参考方案9】:在设置 Jenkins 的人离开我们公司后,我最终遇到了同样的问题。他设置了工作区,并且 TFS 结帐正在使用备用身份验证。由于他的凭据从 msdn 中删除,TFS 结帐开始阻塞。
遵循 LarryG 的解决方案有助于删除工作区。唯一不同的是,我只是使用了离开公司的人的 windows live ID。
tf 工作区 /delete myWorkSpaceName;windowsliveID
【讨论】:
以上是关于如何删除另一个用户的 TFS 工作区映射的主要内容,如果未能解决你的问题,请参考以下文章