Azure DevOps - 删除工作区

4

使用 VS 2019开发人员命令提示符

我能够看到所有工作区的列表。

tf workspaces /collection:"https://dev.azure.com/[ORGANIZATION]" /owner:*

然后,我可以使用以下命令删除本地工作区:

tf workspace /delete [WORKSPACE];"[OWNER]"

如果我启动Visual Studio,然后重新运行第一个命令,工作区将返回

如果我从VS UI中删除工作区,则会出现相同的情况。只要单击map & get以创建与刚刚删除的同名新工作区,它就会重新出现。


注释

在重新启动Visual Studio之前,我还尝试了以下操作:

  1. 在此处清除缓存文件夹: C:\Users\[NAME]\AppData\Local\Microsoft\Team Foundation\8.0\Cache
  2. 在此处删除所有本地工作区文件:C:\Users\[NAME]\source\Workspaces

编辑

经过一些测试,我认为问题可能与一个旧的同名工作区有关。我无法删除旧的工作区,因为当我尝试删除旧的非本地数据库时,我会收到以下错误:

错误:

工作区[WORKSPACE];[OWNER]不存在。

现在我认为旧的工作区是我从旧的TFS迁移到Azure时留下的痕迹。


问题

  1. 如何删除所有工作区?
  2. 可以从Azure Dev Ops门户中删除工作区吗?
  3. 如何删除非本地工作区?

如果您没有启动VS并重新运行第一个命令,那么已删除的工作区是否仍然存在?在VS UI中,您能否成功完全删除工作区? - Shayki Abramczyk
根据您的命令行,您是否尝试删除 Azure DevOps 服务而不是 TFS 工作区? - PatrickLu-MSFT
@ShaykiAbramczyk 是的,工作区直到我再次启动VS才会显示为已删除。 - DreamTeK
@PatrickLu-MSFT 我相信我使用的命令删除了工作区。运行删除命令后,该工作区将从列表中移除。 - DreamTeK
@DreamTeK 过去在 VS2019 中它工作得很好?你有最新版本的 VS2019 吗? - Shayki Abramczyk
显示剩余2条评论
2个回答

5

要删除现有的工作区,您必须是所有者或具有全局管理工作区权限设置为允许。

您也可以尝试使用所有者唯一 ID 而非名称。

tf vc workspaces ws_3_3 /computer:* /format:xml /collection:https://dev.azure.com/patricklu/

ws_3_3是您想要删除的工作区名称,collection只需输入集合URL。

在弹出窗口中,输入地址以连接到URL(如果有)。

完成后,它将返回以下信息:

enter image description here

其中包含所有者唯一ID的信息。

然后,您只需要使用tf workspace /delete命令,例如:

tf workspace /delete ws_3_3;fb46f066-9122-4342-94c4-93b7526a3545

enter image description here

只需输入“yes”,即可删除工作区。如果您尝试删除一个非本地的工作区,而在删除时没有包括集合URL,则可能会导致出现“无法确定源控制服务器”的错误。

1. 如何删除所有工作区?

公司中没有删除所有工作区的命令,你需要逐个删除。

2. 是否可以从Azure Dev Ops门户删除工作区?

不行,您应该使用命令行或通过Visual Studio UI来完成如下操作:

enter image description here 希望这能有所帮助。


谢谢Patrick。这确实提供了一些见解。我使用唯一ID进行了删除,它被删除了,但是重新启动VS会将其恢复。我还尝试使用VS中的UI删除工作区,但是只要我单击“映射和获取”以创建新的工作区,旧的工作区就会立即恢复。 - DreamTeK
根据您最新的更新,@DreamTeK提到:“经过一些测试,我相信问题可能与一个旧的同名工作区有关。我无法删除旧的工作区。” 看起来这是由于一个过时的工作区引起的。删除它后,尝试清除此处的缓存文件夹:C:\Users[NAME]\AppData\Local\Microsoft\Team Foundation\8.0\Cache。关闭Visual Studio并重新加载它,这可能会解决问题。 - PatrickLu-MSFT
1
我正在研究Sidekicks,但无法在2019年版本中使其正常工作。我会尝试看看能否解决这个问题。谢谢。 - DreamTeK
@DreamTeK 对于我截图未能清晰呈现的重要部分,我感到抱歉。有一个选项“显示远程工作区”。如果您勾选此选项,您将能够查看所有您拥有的工作区(包括其他计算机上的工作区)。“那么我的理解是,工作区被集中存储在...服务器上。”不是的,工作区是分别存储在您创建的任何开发机器上的。此外,如果您想删除其他用户创建/托管的工作区,无论是在您自己的开发机器上还是在另一台机器上,您需要使用命令行tf workspace /delete ws_3_3;username or ID - PatrickLu-MSFT
1
再次感谢您的跟进和顶级提示。实际上,我并没有解决我的确切问题,但您回答了最初的问题,所以我将把它标记为已解决。工作区的所有者不再是组织的一部分,这可能是根本原因,但我认为管理员仍然具有适当的权限来删除它们。 - DreamTeK
显示剩余9条评论

2
我最近在删除工作区时遇到了一些问题,因为拥有该工作区的用户已经离开,所以验证无法识别他们的帐户。 这篇文章向我介绍了tf workspaces命令的XML输出;使我能够获取用户的基本ID并使用它删除工作区。
以下是我用来删除用户所有工作区的PowerShell包装器:
Set-Alias -Name 'tf' -Value 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\TF.exe' # amend path so it points to your tf.exe file

# fetch a list of all workspaces and store them in an xml variable
$x = [xml](tf workspaces /computer:* /owner:* /format:xml)

# determine who we want to delete (this is used in our filter later; to delete all, just skip the filter
$userToDelete = 'Someone@example.com'

# for each workspace 
# take those where the owner's display name matches our target user
# then delete that workspace (I've left prompts enabled, so you can manually validate things; add /noprompt to avoid that
$x.Workspaces.Workspace | ?{$_.ownerdisp -eq $userToDelete} | %{tf vc workspace /delete "$($_.name);$($_.owner)"}

更多有关可用选项的信息,请参见MS Docs,以便您可以根据自己的确切要求进行微调。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接