如何删除TFS工作区映射?

时间:2013-04-03 09:59:22

标签: jenkins 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 *匹配*”

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

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

20 个答案:

答案 0 :(得分:183)

来自VS:

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

    来自另一台计算机上的VS

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

    show remote workspaces

    从命令行

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

答案 1 :(得分:115)

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

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

4.05.0

答案 2 :(得分:19)

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

  1. 打开team explorer
  2. 点击Source Control
  3. 右键点击project
  4. 点击Remove Mapping

答案 3 :(得分:11)

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

所以这里的解决办法肯定会有效。以下是解决方法。

  1. 转到“团队资源管理器”
  2. 转到“来源控制”
  3. 转到“工作区”下拉列表
  4. 点击“工作区......”
  5. 将出现一个弹出窗口
  6. 点击“显示远程工作区”
  7. 现在删除存在冲突的工作区,然后继续工作。

答案 4 :(得分:5)

请按照以下步骤操作:

Ctrl + Run 

复制和过去

%LocalAppData%\Microsoft\Team Foundation

您将获得不同版本的TFS,例如 enter image description here

点击每个文件夹,您将获得

enter image description here

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

重新打开Visual studio。

感谢。

答案 5 :(得分:3)

我设法使用/ newowner命令删除映射,如下所示:

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

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

答案 6 :(得分:3)

更新2019-01-23

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

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工作区/删除:*,从控制面板清除凭据,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 :(得分:2)

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

  1. 打开Visual Studio命令提示符
  2. 首先关闭Visual Studio,否则删除命令可能无法删除工作区
  3. 列出工作区命令 - &gt; tf /?从TFS版本中找到可用的命令。
  4. 列出工作区 - &gt; tf工作区
  5. 删除工作区 - &gt; tf工作区YourWorkspace / delete

答案 8 :(得分:2)

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

TFS Remove MAPPING

答案 9 :(得分:1)

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

当我尝试重新映射到新位置(SU帐户被链接到)以尝试恢复我的挂起更改时,它会告诉我它已经映射到SU,我无法做到这样做,但无法删除地图!显示远程工作区,通过命令行删除所有工作区等等。然后,我想到了如果它实际上链接到我的计算机上的SU用户帐户 ,而不是域名。&#34;我在本地登录了我的SU,果然,为该用户设置了工作区。我删除了映射,并且能够返回到我的普通用户并重新映射而没有问题。

故事的道德,也许另一个用户登录在同一台机器上,从当前登录的用户看不到,因此您无法删除甚至看到映射。

答案 10 :(得分:1)

档案 - &gt;源控制 - &gt;高级 - &gt;工作区 - &gt;在“管理工作区”中选择工作区,然后单击“编辑”,然后可以更改本地文件夹。

答案 11 :(得分:1)

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

答案 12 :(得分:1)

您不必删除整个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服务器(不再使用)。

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

enter image description here

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

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

tf workspace /delete bi;James Wierzba

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

答案 17 :(得分:0)

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

(1)单击“查看”按钮。

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

(3)点击“源代码管理”

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

(5)点击删除映射

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

答案 18 :(得分:0)

这里的所有答案似乎都是部分答案,并非在所有情况下都有效。我认为,只要您具有适当的权限,此答案就可以在所有情况下使用。

  1. 打开“开发人员命令提示符”。就我而言,我已经使用VS 2019的开发人员命令提示符对其进行了测试。
  2. 键入以下命令:tf workspaces

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

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

如果有运气,您将知道要使用这两个中的哪一个。但是,如果您需要循环浏览所有内容,则只需一次完成一个集合。这里的每个“集合”都与Azure DevOps中的“组织”相同(我认为)。

如果您不使用此收藏详细信息,则可能会看到错误消息:

  

无法确定源控制服务器。

  1. 下一步,为您要使用的集合键入以下命令:

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

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

  1. 下一步,我们将运行相同的命令,但在其末尾附加/format:xml

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

这现在为您提供了一堆带有一些其他属性的XML。我们最关心的是所有者别名。这是您现在需要删除和删除这些工作区所需的信息。没有这些附加信息,很容易撞墙并被错误消息卡住:

  

指定一个工作区。

  1. 现在,我们拥有所需的所有信息。给定其他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条相同的记录!)。


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

答案 19 :(得分:0)

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

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

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