我在一个团队项目中的 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”
所以我猜它甚至没有被缓存。
那么是什么导致了错误以及如何解决呢?
D:\jenkins\jobs\ProjectName1-Build\workspace
的 TFS 工作区设置为另一个 TFS 用户?
来自 VS:
打开团队资源管理器 单击源代码管理资源管理器 在工具窗口的导航栏中,有一个标有“工作区”的下拉菜单。扩展它并单击“工作区...”选项(是的,有点不直观)“管理工作区”窗口出现。单击编辑,您可以添加/删除/编辑您的工作区
https://i.stack.imgur.com/7gVgw.png
从不同机器上的 VS
您不需要 VS 与登记在同一台机器上,因为您可以编辑远程登记!在您按下“工作区...”项时出现的对话框中,有一个复选框,说明“显示远程工作区” - 只需勾选它,您将获得所有入伍名单:
https://i.stack.imgur.com/UzdQA.png
从命令行
从开发人员命令提示符调用“tf workspace”。它将直接调出“管理工作区”!
我遇到了同样的问题,并且能够通过手动删除位于此处的 TFS 缓存中的所有文件来修复它:
%LocalAppData%\Microsoft\Team Foundation\3.0\Cache
或 4.0
、5.0
等。
the path is already mapped in workspace {mypcname};domain\zhasan
Cache
文件夹中的文件之前,请花一分钟时间复制所有文件和文件夹并将其保存在备份文件夹中,以防万一它不适合您并且您必须将 TFS 恢复到这是以前的状态。
Team Foundation
下的所有内容。
请按照以下步骤从 TFS 中删除映射:
打开团队资源管理器单击源代码管理右键单击您的项目单击删除映射
Remove Mapping
将显示在 Advanced
部分下
错误是真实的。您可能在不同的机器上创建了具有相同名称的工作区。现在您可能已经更改了具有不同机器名称的机器。
因此,这是肯定会起作用的解决方法。以下是解决方法。
转到“Team-Explorer” 转到“Source-Control” 转到 Workspace 下拉菜单 单击“Workspaces...” 将出现一个弹出窗口 单击“Show remote workspaces” 现在删除有冲突的工作区和你可以继续你的工作。
请按照以下步骤操作:
Ctrl + Run
复制和过去
%LocalAppData%\Microsoft\Team Foundation
https://i.stack.imgur.com/6kZrN.png
点击每个文件夹,你会得到
https://i.stack.imgur.com/8yHMl.png
现在删除这些文件夹中的所有数据。
重新打开 Visual Studio。
谢谢。
这里的所有答案似乎都是部分答案,并非在所有情况下都有效。我认为这个答案适用于所有情况,假设你有适当的权限。
打开开发人员命令提示符。就我而言,我已经使用 VS 2019 的开发人员命令提示符对此进行了测试。输入以下命令:tf workspaces
请注意,结果可以列出几个具有相同结构的表。如果您只看到一张表格,那么其他答案中的一些假设可能对您有用。但是,如果您看到两个或更多表,则该 Collection 字符串很重要!对于我们的示例,我们将假设您有两个集合(两个与四个没有什么不同,除了一个比另一个更繁琐):
https://dev.azure.com/foo
和 https://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 条相同的记录!)。
我不知道是否有比这更图形化的方式来管理这些。我已经看过但还没有找到比这更好的方法。
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>>
团队资源管理器 > 源代码管理资源管理器 >
https://i.stack.imgur.com/HdYnQ.png
我设法按照此处的建议使用 /newowner 命令删除了映射:
How can I regain access to my Team Foundation Server Workspace?
该命令打开了一个编辑工作区窗口,我在其中删除了映射。之后我删除了我不需要的工作区。
这里的答案都没有删除我的工作区。但这是一种可能适合您的解决方案。
打开 Visual Studio 命令提示符 先关闭 Visual Studio 否则删除命令可能不会删除工作区 列出工作区命令 -> tf /?从 TFS 版本中查找可用的命令。列出工作区 -> tf 工作区 删除工作区 -> tf 工作区 YourWorkspace /delete
您不必删除整个 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 服务器(不再使用)。
文件 -> 源代码管理 -> 高级 -> 工作区 -> 在管理工作区中选择工作区,然后单击“编辑”,然后您可以更改本地文件夹。
最后删除所有工作区并从头开始。固定的。
我被提示通过 Visual Studio 登录到我们的 TFS 服务器,所以我使用了我的 SU 帐户,这通常是访问服务器所必需的。这导致了一些问题,我最终映射到了一个不同的文件夹,没有意识到我刚刚复制了我所有的东西。在某些时候,Visual Studio 恢复为我的普通用户,我“丢失”了挂起的更改,并注意到新的挂起更改被放置在我的旧映射中。
当我尝试重新映射到新位置(SU 帐户链接到的位置)以尝试恢复我的未决更改时,它会告诉我它已经映射到 SU,我不能这样做,但是有没有办法删除地图!显示远程工作区,通过命令行删除所有工作区等什么都没有显示。然后我想“如果它实际上链接到我计算机上的 SU 用户帐户,而不是域怎么办。”我在本地以我的 SU 身份登录,果然,为该用户设置了一个工作区。我删除了映射,并且能够返回到我的常规用户并重新映射而没有问题。
故事的寓意是,也许另一个用户在同一台机器上登录,这对当前登录的用户是不可见的,因此您无法删除甚至查看映射。
如果上述线索对您没有帮助,请下载 Team Foundation Sidekick 并使用它来删除工作区。
以下是从 TFS 中删除项目映射的步骤:
(1) 点击查看按钮。
(2) 打开团队资源管理器
(3) 点击源代码管理
(4) 右键单击您的项目/目录
(5) 点击删除映射
(6) 最后删除Project表单本地目录。
您还可以通过简单地编辑 .sln 文件并删除 tfs 绑定的 GlobalSection 元素来删除 tfs 映射。
谢谢你的帮助!
查找问题工作区 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
首先在您的系统中下载并安装 Team Explorer 插件,然后转到 Source Control Explorer。在导航窗格中找到 Workspace 字段并单击 Workspaces 选项。单击 Workspaces 选项后,您将看到所有映射的工作空间。单击删除按钮并删除所需工作区的映射。
运行 tf workspaces
以查看当前工作区映射。输出如下所示:
https://i.stack.imgur.com/FWMP4.png
然后运行 tf workspace /delete "{workspace};{user}
使用上面的输出删除工作区 bi
:
tf workspace /delete bi;James Wierzba
如果映射正确,那么您可以撤消/签入您的更改,如果您真的想更改文件夹名称。
或者,如果要删除映射,则在 Visual Studio 中转到 File-> Source Control-> Advanced-> Workspaces-> Edit
现在您可以单击适当的路径并删除映射。