如何删除 TFS 工作区映射?

Posted

技术标签:

【中文标题】如何删除 TFS 工作区映射?【英文标题】:How to remove a TFS Workspace Mapping? 【发布时间】:2013-03-24 22:31:57 【问题描述】:

我在一个团队项目中的 tfs 中有一个项目,然后我们将该项目移动到另一个团队项目中的不同位置。

我已将 Jenkins 配置为连接到团队项目并构建我的解决方案,但是当我更改设置以连接到新的 tfs 团队项目时,出现以下错误:

[workspace] $ "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\tf.exe" workspace -new Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/newteamproject ********
The path D:\jenkins\jobs\ProjectName1-Build\workspace is already mapped in workspace Hudson-ProjectName1-Build-MASTER [http://domain-eg.net:8080/tfs/oldteamproject].

所以上面显示有一个现有的工作区,所以我运行下面的命令来删除它

tf workspace -delete Hudson-ProjectName1-Build-MASTER;domain1\username1 -noprompt -server:http://domain-eg.net:8080/tfs/oldteamproject

它提示工作区已被删除,但我仍然收到同样的错误。

我还通过运行以下命令检查了映射是否已被删除:

tf workspace -server:http://domain-eg.net:8080/tfs/oldteamproject Hudson-ProjectName1-Build-MASTER

但它说工作区并不像预期的那样存在。

所以,我认为它可能在某处缓存它并运行以下命令:

tf workspaces /remove:* /collection:http://domain-eg.net:8080/tfs/oldteamproject

它说“缓存中没有工作区匹配*来自服务器http://domain-eg.net:8080/tfs/oldteamproject”

所以我猜它甚至没有被缓存。

那么是什么导致了错误以及如何解决呢?

【问题讨论】:

TFS 工作区必须包含唯一的工作文件夹映射每台机器,而不仅仅是每个用户和机器。是否可以在测试时设置一个包含 D:\jenkins\jobs\ProjectName1-Build\workspace 的 TFS 工作区作为另一个 TFS 用户? 从构建机器试试这个 - C:\Users\UserName\AppData\Local\Microsoft\Team Foundation\3.0\Cache 并删除文件夹中的所有内容 遇到了同样的问题,我的情况是工作区名称开头有一个空格 我最近重新映射了我的 TFS 根目录并遇到了同样的问题。在我的情况下,TFS 资源管理器只是显示了我在“本地路径:”中签出的旧(最后一个)路径,它是灰色的并且不可点击(蓝色)。我做了一个最新的,它把所有东西都放在正确的新映射中,然后路径变成蓝色/活动。如果您删除了所有旧映射,它可能只是显示您最近访问的最后一个本地文件夹,而不是将文件放在新映射下的位置。 【参考方案1】:

来自 VS:

    打开团队资源管理器 单击源代码管理资源管理器 在工具窗口的导航栏中,有一个标有“工作区”的下拉菜单。 扩展它并单击“工作区...”选项(是的,有点不直观) “管理工作区”窗口出现。点击编辑,您可以添加/删除/编辑您的工作区

来自不同机器上的 VS

您不需要 VS 与登记在同一台机器上,因为您可以编辑远程登记!在您按下“工作区...”项时出现的对话框中,有一个复选框,说明“显示远程工作区” - 只需勾选它,您将获得所有入伍名单:

从命令行

从开发人员命令提示符调用“tf workspace”。它将直接调出“管理工作区”!

【讨论】:

他在构建机器上执行此操作,并且可能没有安装 Visual Studio。 感谢这项工作,这是 TFS 令人敬畏的另一个原因。 我删除了所有工作区。然后添加了新的,再次收到错误,我的文件夹已经映射到(旧的/已删除的)url tfs 的工作空间。无法映射到新的 tfs/工作区。 M 使用 vs 2015 不起作用。无论如何,工作区仍然存在。重新启动,重新启动 vs,祈祷,一起点击高跟鞋 3 次......没什么......不会离开。无法映射到新...无法正常工作。 这是评分最高的答案,但它并没有解决工作区不会删除的情况(如 Beau 上面提到的)。你删除它,关闭对话框,再次打开,它又回来了。绝对令人抓狂。【参考方案2】:

我遇到了同样的问题,并且能够通过手动删除位于此处的 TFS 缓存中的所有文件来修复它:

%LocalAppData%\Microsoft\Team Foundation\3.0\Cache

4.05.0

【讨论】:

谢谢,这对我有用,因为当我的公司更改网络域名时,我的本地 tfs 缓存数据不同步。 不适合我。它还在告诉我the path is already mapped in workspace mypcname;domain\zhasan 我有一个 \4.0\Cache 和 \5.0\Cache 我摆脱了。以防万一对任何人有帮助。 这对我也有用。专业提示,在删除 Cache 文件夹中的文件之前,请花一分钟时间复制所有文件和文件夹并将其保存在备份文件夹中,以防万一它对您不起作用并且您必须将 TFS 恢复到这是以前的状态。 其实你可以删除Team Foundation下的所有东西,如果你想执行干净的重新同步。【参考方案3】:

按照以下步骤从 TFS 中删除映射:

    打开team explorer 点击Source Control 右击你project 点击Remove Mapping

【讨论】:

No option for remove mapping.. 仍然面临您的文件夹已映射到旧/已删除 tfs url 的某个工作区的错误.. M using vs 2015 Visual Studio Premium 2013 中不存在 我认为此选项仅在定位到最初映射的文件夹时可用。因此,如果我使用递归映射整个团队项目,我只能取消映射整个团队项目,而如果我只映射解决方案文件夹,我就可以愉快地取消映射。 @Sami 右键单击​​您的项目后,Remove Mapping 将显示在Advanced 部分下【参考方案4】:

错误是真实的。您可能在不同的机器上创建了具有相同名称的工作区。现在您可能已经更换了具有不同机器名称的机器。

所以这里有一个绝对可行的解决方法。以下是解决方法。

    转到“团队探索者” 转到“源代码管理” 转到工作区下拉菜单 点击“工作区...” 会出现一个弹出窗口 点击“显示远程工作区” 现在删除有冲突的工作区,您可以继续工作。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 链接现在可以正常工作了。谢谢alextansc @smthakur19 alex 想说的是,如果有一天该链接不再可用(网站关闭、页面已删除等),这个答案将毫无用处。因此,最好将引用链接中的基本文本和代码包含在内,并将其包含在全部答案中。所以,答案和问题的来源都是如此。 详细解释,但我无法添加图片,因为我的声誉低于 10。 链接断开,程序不工作。工作区仍然【参考方案5】:

请按照以下步骤操作:

Ctrl + Run 

复制和过去

%LocalAppData%\Microsoft\Team Foundation

您将获得不同版本的 TFS,例如

点击每个文件夹,你会得到

现在删除这些文件夹中的所有数据。

重新打开 Visual Studio。

谢谢。

【讨论】:

【参考方案6】:

2019-01-23 更新

如果您在 tf workspace 命令中使用正确的用户名 (wkspcOwnerDomain\wkspcOwnerUsername) 后仍反复收到以下错误 The workspace wkspaceEg does not exist…,例如,

tf workspace "wkspaceEg;wkspcOwnerDomain\wkspcOwnerUsername" /collection:http://tfs.example.com:8080/tfs/collectionEg /login:TFSUsername,TFSPassword

那么tf workfold 命令可能有助于修复它。见this question。

如果即使这样也不起作用,并且您无法/不愿意使用 TFS Sidekicks,请继续下面有风险的最后选择。


我使用的是 TFS 2012。我尝试了在线建议的所有内容:删除缓存文件夹、使用工作区下拉菜单、tf 工作区 /remove:*、从控制面板、IE 等清除凭据。

没有任何效果,我相信我的工作区不知何故损坏了。最后,我转到 TFS 数据库并运行以下查询。那行得通!当然在弄乱数据库时要非常小心,进行备份等。

数据库名为Tfs_<<your_TFS_collection_name>>。忽略Tfs_Configuration MSSQL 数据库。我不确定,但如果您没有Tfs_<<your_TFS_collection_name>> 数据库,则设置可能在Tfs_DefaultCollection 数据库中。映射存储在tbl_WorkingFolder.LocalItem

/*Find correct workspace*/
SELECT WorkspaceId, *
FROM tbl_Workspace
ORDER BY WorkspaceName

/*View the existing mapping*/
SELECT LocalItem, *
FROM tbl_WorkingFolder
WHERE WorkspaceId = <<WorkspaceId from above>>

/*Update mapping*/
UPDATE tbl_WorkingFolder
SET LocalItem = 'D:\Legacy.00\TFS\Source\Workspaces\teamProjEg' WHERE
/*LocalItem = NULL might work too but I haven't tried it*/
WorkspaceId = <<WorkspaceId from above>>

【讨论】:

【参考方案7】:

这里的所有答案似乎都是部分答案,并非在所有情况下都有效。假设您拥有适当的权限,我认为此答案适用于所有情况。

    打开开发者命令提示符。就我而言,我已经使用 VS 2019 的开发者命令提示符对此进行了测试。 输入此命令:tf workspaces

请注意,结果可以列出几个具有相同结构的表。如果您只看到一张表格,那么其他答案中的一些假设可能对您有用。但是,如果您看到两个或更多表,那么 Collection 字符串很重要!对于我们的示例,我们将假设您有两个集合(两个与四个没有什么不同,只是一个比另一个更繁琐):

https://dev.azure.com/foohttps://bar.visualstudio.com/

如果运气好的话,您会知道要使用这两者中的哪一个。但是,如果您需要循环浏览它们,那么您只需一次收集一个。这里的每个“集合”都与 Azure DevOps 中的“组织”相同(我认为)。

如果您不使用此集合详细信息,那么您可能会看到一条错误消息:

无法确定源代码管理服务器。

    接下来,为您要使用的集合键入以下命令:

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo

这将使您更全面地了解您正在处理的内容。如果您有多个 MSA 和 Org 帐户从同一台计算机访问此存储库,这会变得特别令人讨厌。事实上,您可能有多个看似相同的条目。如果您尝试根据您当前知道的内容删除它们,则可能无法正常工作。但我们可以获得更多信息。

    接下来,我们将运行相同的命令,但将 /format:xml 附加到它的末尾:

tf workspaces /computer:* /owner:* /collection:https://dev.azure.com/foo /format:xml

现在,这为您提供了一堆带有一些附加属性的 XML。我们最关心的可能是所有者别名。这是您现在需要检查并删除这些工作区的缺失信息。如果没有这些附加信息,很容易碰壁并被错误消息卡住:

指定一个工作区。

    现在我们拥有了我们需要的所有信息。给定额外的OwernAliases 条目,选择您希望删除的唯一条目(如果有多个则重复)并使用以下命令(列出了几个示例):

    tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;Windows Live ID\John.Doe@hotmail.com" tf workspace /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;John Doe" tf workspace /delete /collection https://dev.azure.com/foo "MyWorkspaceName;2C3E8474-A39C-4785-8794-DC72F09981E6\John.Doe@Example.com"

GUID 标识 AAD 目录,引号用于处理别名中可能存在的任何空格。 “MyWorkspaceName”来自您之前列出工作空间的查询。


如果没有这种非常彻底的方法,这个问题中的所有其他答案可能对你来说都失败了。虽然其中一些努力会清除本地工作空间,但它们不会清除服务器工作空间,您仍然可以与之发生冲突。此外,如果您以前使用过不同的帐户,事情可能会变得棘手,例如,如果您从 MSA 切换到 AAD 帐户。如果您有一个 MSA 帐户多个 AAD 帐户,所有这些帐户都使用您在同一个工作站上使用的相同电子邮件地址,事情会变得非常棘手。如果其中多个都使用工作区的默认名称:您的计算机的主机名,那么它会变得超级疯狂。在我的例子中,我有四个工作区,它们都具有相同的工作区名称、所有者名称和计算机名称(即没有 XML 格式的第一个查询有 4 条相同的记录!)。


我不知道是否有比这更图形化的方式来管理这些。我已经看过但还没有找到比这更好的方法。

【讨论】:

这应该被标记为答案——非常全面【参考方案8】:

我设法按照此处的建议使用 /newowner 命令删除了映射:

How can I regain access to my Team Foundation Server Workspace?

该命令打开了一个编辑工作区窗口,我在其中删除了映射。之后我删除了我不需要的工作区。

【讨论】:

【参考方案9】:

团队资源管理器 > 源代码管理资源管理器 >

【讨论】:

Ahmed elshiekh 的答案对我有用:文件-> 源代码管理-> 高级-> 工作区-> 在管理工作区中选择工作区,然后单击“编辑”然后您可以更改本地文件夹。 【参考方案10】:

这里的答案都没有删除我的工作区。但这里有一种可能适合您的解决方案。

    打开 Visual Studio 命令提示符 先关闭 Visual Studio 否则删除命令可能不会删除工作区 列出工作区命令 -> tf /?从 TFS 版本中查找可用的命令。 列出工作区 -> tf 工作区 删除工作区 -> tf workspace YourWorkspace /delete

【讨论】:

如果您有两个同名但用于不同用户的工作区(例如您的普通帐户和管理员帐户),则可以采用这种方法。如果您按照其他答案中的概述打开“工作区”视图,这两个工作区将不会显示为两个空间 - 只会列出当前用户的一个。就我而言,它是阻止操作的第二个工作区(用于管理员帐户)。如果您按照此答案中的说明进行操作,则第 5 步将允许您使用“tf workspace YourWorkspace;HiddenUser /delete”删除第二个工作区。【参考方案11】:

您不必删除整个缓存文件夹。你失去了所有的设置/偏好 工作区映射存储在一个名为:

VersionControl.config 在用户本地设置/应用程序数据目录下。 位于 Windows 7 中:

%LocalAppData%\Microsoft\Team Foundation\x.0\Cache\Volatile

其中 x= 3.0,4.0, 5.0,6.0 等。

在里面你会找到名为 guid 的文件夹,打开每个文件夹,手动编辑前面提到的文件,从本地文件夹中删除工作区映射(目录路径将出现在 mappedpaths 属性中)到TFS 服务器(不再使用)。

【讨论】:

【参考方案12】:

File -> Source Control -> Advanced -> Workspaces -> 在Manage Workspaces中选择workspace,点击“Edit”即可更改本地文件夹。

【讨论】:

【参考方案13】:

最终删除了所有工作区并从头开始。固定。

【讨论】:

【参考方案14】:

系统提示我通过 Visual Studio 登录到我们的 TFS 服务器,因此我使用了我的 SU 帐户,该帐户通常是访问服务器所必需的。这导致了一些问题,我最终映射到了一个不同的文件夹,没有意识到我刚刚复制了我所有的东西。在某些时候,Visual Studio 恢复为我的普通用户,我“丢失”了挂起的更改,并注意到新的挂起更改被放置在我的旧映射中。

当我尝试重新映射到新位置(SU 帐户链接到的位置)以尝试恢复我的未决更改时,它会告诉我它已经映射到 SU,但我不能这样做,但无法删除地图!显示远程工作区,通过命令行删除所有工作区等什么都没有显示。然后我想“如果它实际上链接到我计算机上的 SU 用户帐户,而不是域,该怎么办。”我在本地以我的 SU 身份登录,果然,为该用户设置了一个工作区。我删除了映射,并且能够返回到我的常规用户并重新映射而没有问题。

故事的寓意,也许另一个用户在同一台​​机器上登录,这对当前登录的用户是不可见的,因此您无法删除甚至查看映射。

【讨论】:

【参考方案15】:

如果上述线索对您没有帮助,请下载 Team Foundation Sidekick 并使用它来删除工作区。

【讨论】:

【参考方案16】:

以下是从 TFS 中删除项目映射的步骤:

(1) 点击查看按钮。

(2) 打开团队资源管理器

(3) 点击源代码管理

(4) 右键单击​​您的项目/目录

(5) 点击移除映射

(6) 最后删除Project表单本地目录。

【讨论】:

【参考方案17】:

您还可以通过简单地编辑 .sln 文件并删除 tfs 绑定的 GlobalSection 元素来删除 tfs 映射。

【讨论】:

【参考方案18】:

感谢您的帮助!

查找问题工作区 选择 * FROM tbl_Workspace WHERE WorkspaceName like '%xxxxx%'

找到所需的工作空间 选择 * FROM tbl_Workspace WHERE WorkspaceName like '%zzzzz%'

选择 Edit Top 200 tbl_WorkingFolder 然后查找问题映射 SELECT * FROM tbl_WorkingFolder WHERE WorkspaceId = 上面的问题 WorkspaceId

将 WorkspaceId 更改为所需的 WorkspaceId

最后转到 Project Explorer 并在项目上选择 Remove Mapping

修改 VB6 MSSCCPRJ.SCC 以匹配所需的 WorkSpace

【讨论】:

【参考方案19】:

首先在您的系统中下载并安装团队资源管理器插件,然后转到源代码管理资源管理器。在导航窗格中找到 Workspace 字段并单击 Workspaces 选项。 单击 Workspaces 选项后,您将看到映射的所有工作空间。单击删除按钮并删除所需工作区的映射。

【讨论】:

【参考方案20】:

运行tf workspaces 以查看当前工作区映射。输出如下:

然后运行tf workspace /delete "workspace;user

使用上面的输出,删除工作区bi

tf workspace /delete bi;James Wierzba

【讨论】:

这对我不起作用。我收到以下错误:发生参数错误:删除工作区需要一个工作区名称。【参考方案21】:

如果映射正确,则可以撤消/签入您的更改,如果您真的想更改文件夹名称。

或者,如果您想删除映射,则在 Visual Studio 中转到 文件-> 源代码管理-> 高级-> 工作区-> 编辑

现在您可以单击适当的路径并删除映射。

【讨论】:

以上是关于如何删除 TFS 工作区映射?的主要内容,如果未能解决你的问题,请参考以下文章

vs2013 在线tfs 怎么删除本地映射

删除 TFS 中的本地文件夹

TFS命令tf delete删除工作区

从解决方案中删除 TFS 连接

如何删除 TFS 组

如何删除从 TFS 中删除的成员完成的锁定