ChatGPT解决这个技术问题 Extra ChatGPT

如何删除 TFS 工作区映射?

我在一个团队项目中的 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 资源管理器只是显示了我在“本地路径:”中签出的旧(最后一个)路径,它是灰色的并且不可点击(蓝色)。我做了一个最新的,它把所有东西都放在正确的新映射中,然后路径变成蓝色/活动。如果您删除了所有旧映射,它可能只是显示您最近访问的最后一个本地文件夹,而不是将文件放在新映射下的位置。

B
Bogdan Gavril MSFT

来自 VS:

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

https://i.stack.imgur.com/7gVgw.png

从不同机器上的 VS

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

https://i.stack.imgur.com/UzdQA.png

从命令行

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


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

我遇到了同样的问题,并且能够通过手动删除位于此处的 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 下的所有内容。
K
Ken Clark

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

打开团队资源管理器单击源代码管理右键单击您的项目单击删除映射


没有删除映射的选项..仍然面临您的文件夹已映射到旧/已删除 tfs url 的某个工作区的错误.. M 使用 vs 2015
Visual Studio Premium 2013 中不存在
我认为此选项仅在针对原始映射文件夹时可用。因此,如果我使用递归映射整个团队项目,我只能取消映射整个团队项目,而如果我只映射解决方案文件夹,我可以很高兴地取消映射。
@Sami 右键单击您的项目后,Remove Mapping 将显示在 Advanced 部分下
s
smthakur19

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

因此,这是肯定会起作用的解决方法。以下是解决方法。

转到“Team-Explorer” 转到“Source-Control” 转到 Workspace 下拉菜单 单击“Workspaces...” 将出现一个弹出窗口 单击“Show remote workspaces” 现在删除有冲突的工作区和你可以继续你的工作。


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

请按照以下步骤操作:

Ctrl + Run 

复制和过去

%LocalAppData%\Microsoft\Team Foundation

https://i.stack.imgur.com/6kZrN.png

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

https://i.stack.imgur.com/8yHMl.png

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

重新打开 Visual Studio。

谢谢。


J
Jaxidian

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

打开开发人员命令提示符。就我而言,我已经使用 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 工作区 /delete /collection:https://dev.azure.com/foo "MyWorkspaceName;John Doe" tf 工作区 /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 条相同的记录!)。

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


这应该被标记为答案 - 非常全面
D
Dennis T --Reinstate Monica--

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>>

D
Deepu Reghunath

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

https://i.stack.imgur.com/HdYnQ.png


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

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

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

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


C
Chris Cuciak

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

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


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

您不必删除整个 Cache 文件夹。您将丢失所有设置/首选项工作区映射存储在一个名为:

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

%LocalAppData%\Microsoft\Team Foundation\x.0\Cache\Volatile 其中 x= 3.0,4.0, 5.0,6.0 等。

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


A
Ahmed elshiekh

文件 -> 源代码管理 -> 高级 -> 工作区 -> 在管理工作区中选择工作区,然后单击“编辑”,然后您可以更改本地文件夹。


s
smirkingman

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


T
Tyler StandishMan

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

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

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


M
Mr. N. Das

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


F
FARHAN KHAN

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

(1) 点击查看按钮。

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

(3) 点击源代码管理

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

(5) 点击删除映射

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


C
CalCof

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


v
vmaynard

谢谢你的帮助!

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

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

选择 Edit Top 200 tbl_WorkingFolder 然后查找问题映射 SELECT * FROM tbl_WorkingFolder WHERE WorkspaceId = Problem WorkspaceId from above

将 WorkspaceId 更改为所需的 WorkspaceId

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

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


A
Arpit Raizada

首先在您的系统中下载并安装 Team Explorer 插件,然后转到 Source Control Explorer。在导航窗格中找到 Workspace 字段并单击 Workspaces 选项。单击 Workspaces 选项后,您将看到所有映射的工作空间。单击删除按钮并删除所需工作区的映射。


J
James Wierzba

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

https://i.stack.imgur.com/FWMP4.png

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

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

tf workspace /delete bi;James Wierzba


这对我不起作用。我收到以下错误:发生参数错误:删除工作区需要一个工作区名称。
D
Dharman

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

或者,如果要删除映射,则在 Visual Studio 中转到 File-> Source Control-> Advanced-> Workspaces-> Edit

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅