如何删除TFS工作区映射?


135

我在团队项目中的tfs中有一个项目,然后将项目移至另一个团队项目中的其他位置。

我已经配置了Jenkins连接到团队项目并构建我的解决方案,但是当我更改设置以连接到新的tfs team项目时,它给了我以下错误:

[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匹配的工作空间”

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

那么,什么原因导致该错误以及如何解决呢?


3
TFS工作区必须在每台计算机上包含唯一的工作文件夹映射,而不仅仅是每个用户和机器。测试期间是否可能设置一个包含D:\jenkins\jobs\ProjectName1-Build\workspace另一个TFS用户的TFS工作区?
爱德华·汤姆森

9
在构建机器上尝试此操作-C:\ Users \ {UserName} \ AppData \ Local \ Microsoft \ Team Foundation \ 3.0 \ Cache并删除文件夹中的所有内容
SoftwareCarpenter

遇到相同的问题,我的情况是工作区名称开头的空白
Daniel Rapaport 2014年

我最近重新映射了我的TFS根目录,并遇到了同样的问题。事实证明,TFS资源管​​理器只是在“本地路径:”中显示了我已签出的旧(最后)路径,而该路径显示为灰色且不可单击(蓝色)。我做了最新的更新,并将所有内容放入正确的新映射中,然后路径变为蓝色/活动状态。如果删除了所有旧的映射,则可能只显示您最近获取的最后一个本地文件夹,而不是将文件放在新映射下的位置。
Rich M

Answers:


196

从VS:

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

源代码管理浏览器

从另一台机器上的VS

您无需将VS与征募对象放在同一台计算机上,因为您可以编辑远程征募对象!在按下“工作区...”项时出现的对话框中,有一个复选框指出“显示远程工作区”-勾选该复选框,您将获得所有应征者的清单:

显示远程工作区

从命令行

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


1
他在构建机器上执行此操作,并且可能未在其中安装Visual Studio。
Erik Funkenbusch 2014年

7
感谢这项工作,这是TFS出色的另一个原因。
schmoopy,2016年

6
我删除了所有工作区。然后添加新的,再次出现错误,我的文件夹已映射到wrokspace(旧的/已删除的)URL tfs。无法映射到新的tfs /工作区。M使用vs 2015
Sami

11
不起作用 工作空间仍然保持不变。重新启动,重新启动vs,祈祷,一起踩脚跟3倍...什么都没有...不会离开。无法映射到新...无法工作。
Beau D'Amore

3
这是评分最高的答案,但并未解决工作空间将不会删除的情况(如上文提到的Beau)。删除它,关闭对话框,再次打开,然后又回来了。绝对发疯。
dapug '17

123

我遇到了同样的问题,并且能够通过手动删除位于以下位置的TFS缓存中的所有文件来解决此问题:

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

或者4.05.0等等。


4
谢谢,这对我有用,因为当公司更改网络域名时,我的本地tfs缓存数据不同步。
dsum 2014年

5
不适合我。它仍然告诉我the path is already mapped in workspace {mypcname};domain\zhasan
SearchForKnowledge 2014年

5
我已经摆脱了\ 4.0 \ Cache和\ 5.0 \ Cache。以防万一。
fooser 2014年

1
这也对我有用。专业提示,在删除文件Cache夹中的文件之前,请花一点时间复制所有文件和文件夹并将其保存在备份文件夹中,以防万一它对您不起作用,并且您必须将TFS还原到以前的状态。
湿婆

实际上,Team Foundation如果要执行干净的重新同步,则可以删除所有内容。
Supersharp

21

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

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

6
没有选项可用于删除映射..仍然面临错误,即您的文件夹已被映射到旧的/已删除的tfs url的某些工作空间。.M使用vs 2015
Sami

1
在Visual Studio Premium 2013中不存在
dam16

1
我认为该选项仅在定位原始映射的文件夹时可用。因此,如果我使用递归映射整个团队项目,则只能取消映射整个团队项目,而如果仅映射解决方案文件夹,则可以足够愉快地取消映射。
杰夫

@Sami您的项目右键点击后,Remove Mapping会显示下Advanced
乌代

11

错误是真实的。您可能在另一台计算机上创建了具有相同名称的工作空间。现在,您可能已更改了具有不同机器名称的机器。

所以这是绝对可行的解决方法。以下是解决方法。

  1. 转到“团队资源管理器”
  2. 转到“源代码管理”
  3. 转到工作区下拉菜单
  4. 点击“工作区...”
  5. 将会出现一个弹出窗口
  6. 单击“显示远程工作区”
  7. 现在,删除有冲突的工作空间,您可以继续工作。

尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。
alextansc

链接现在可以正常工作了。谢谢alextansc
smthakur19

@ smthakur19 alex试图说的是,如果有一天该链接不再可用(网站关闭,页面删除等),此答案将毫无用处。因此,最好包含引用链接中的基本文本和代码,并将其包含在所有答案中。因此,答案和问题的来源都是SO。
Beytan Kurt 2015年

详尽的交代,但我不能因为我的名声低于10.添加图片
smthakur19

1
链接断开,程序不起作用。工作区依然存在
Beau D'Amore

7

请按照以下步骤操作:

Ctrl + Run 

复制和粘贴

%LocalAppData%\Microsoft\Team Foundation

您将获得不同版本的TFS,例如 在此处输入图片说明

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

在此处输入图片说明

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

重新打开Visual Studio。

谢谢。


4

更新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命令可能会帮助修复它。看到这个问题

如果即使这样也不起作用,并且您不能/不愿意使用TFS Sidekicks,请继续下面的危险最后一击选项。


我正在使用TFS2012。我尝试了所有在线建议的操作:删除缓存文件夹,使用工作区下拉列表,tf工作区/ remove:*,从控制面板,IE中清除凭据,等等。

什么都没做,我相信我的工作空间以某种方式损坏了。最后,我进入了TFS数据库并运行了以下查询。可行!当然,在弄乱数据库,进行备份等操作时要格外小心

该数据库称为Tfs_<<your_TFS_collection_name>>。忽略Tfs_ConfigurationMSSQL数据库。我不确定,但是如果您没有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>>


2

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

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

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

2

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

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

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

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

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



1

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

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

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


1

如果上述提示对您没有帮助,请下载Team Foundation Sidekick,然后使用该提示删除工作区。



1

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

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

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

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条相同的记录!)。


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


0

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


0

谢谢你的帮助!

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

查找所需的工作区 SELECT * FROM tbl_Workspace WHERE WorkspaceName例如'%zzzzz%'

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

将WorkspaceId更改为所需的WorkspaceId

最后转到Project Explorer,然后选择项目上的Remove Mapping。

修改VB6 MSSCCPRJ.SCC以匹配所需的工作空间


0

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


0

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

在此处输入图片说明

然后跑 tf workspace /delete "{workspace};{user}

使用上面的输出来删除工作空间bi

tf workspace /delete bi;James Wierzba


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

0

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

(1)点击查看按钮。

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

(3)单击源代码管理

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

(5)单击删除映射

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.