如何在TFS 2015中删除Git存储库?

Her*_*des 11 tfs tfs-2015

我正在尝试在TFS 2015 Update 1中删除Git存储库.存储库是在现有TFVC团队项目中使用新Git和TFVC在同一项目功能中创建的.但是,我可以轻松地使用TFS门户创建Git存储库(使用"代码"选项卡),我无法在TFS门户或基于命令行的功能中找到任何功能来删除Git存储库.此外,当我浏览"管理存储库..."时,我找不到名为"删除存储库"的功能.

我没有运气谷歌搜索和搜索MSDN页面.

所以我不想删除整个团队项目(因为它包含很多源代码,工作项和历史记录),但只有一个空的Git存储库.

有没有人有建议?

编辑#1 当只有一个Git存储库保留在特定团队项目中时,管理页面中应显示"删除存储库"选项的子菜单似乎没有启用(参见屏幕截图).对于记录:当存在两个或更多Git存储库时,它是可见的.

在此输入图像描述

Elm*_*mar 12

实际上当项目中有多个git repos时非常简单:

  1. 选择代码选项卡.
  2. 点击它显示您的回购的下拉列表.
  3. 选择管理存储库.
  4. 单击要删除的仓库旁边的上下文下拉列表.
  5. 选择删除存储库.

在此输入图像描述

在此输入图像描述

编辑(根据您的编辑):

TFS 2015(更新1)确实具有针对TFS团队项目中包含的Git回购数量的明确最小限制.

TFS REST api包含的功能可以一起用于删除git repo,但它不会删除TFS项目中的"last" repo.

这是一般的API文档

删除git repo涉及的两个功能是:

  1. 获取存储库列表

    (GET VERB)https:// {instance}/defaultcollection/[{project}]/_apis/git/repositories?api-version = {version}

当给出项目名称时,返回包含git repos列表及其repo ID的json.

  1. 删除存储库,当给定存储库 ID时,将删除指定的存储库.

    (DELETE VERB)https:// {instance}/defaultcollection/_apis/git/repositories/{repository}?api-version = {version}

不幸的是,在调用delete repo函数时有一个问题:

{
"$id": "1"
"innerException": null
"message": "There must always be at least one repository per Team Project."
"typeName": "Microsoft.TeamFoundation.Git.Server.GitRepositoryMinimumPerProjectThresholdExceededException, Microsoft.TeamFoundation.Git.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"typeKey": "GitRepositoryMinimumPerProjectThresholdExceededException"
"errorCode": 0
"eventId": 3000
}
Run Code Online (Sandbox Code Playgroud)

MSDN上的异常文档

在实验室实例上查看SQL服务器(我认为如果在prod环境中误用​​,则不支持)

TFS数据库包含一个删除名为prc_DeleteGitRepositories的 git repos的存储过程,它需要4个参数,我在数据库中搜索或在web-ui上命中F12.

它被调用如下:

EXEC prc_DeleteGitRepositories @partitionId=1, 
@teamProjectUri ='vstfs:///Classification/TestProject1/cbcc3093-247d-448a-8c3b-f5d447fc8afa', 
@repositoryId='4111286D-D066-4F3D-89B9-960055D678FE', 
@deleterId='769254d3-1f13-431c-a580-1500dcbffbce'
Run Code Online (Sandbox Code Playgroud)

但是,在指定项目中仅存在1个git repo的场景中,会引发以下情况:

Msg 50000, Level 16, State 1, Procedure prc_DeleteGitRepositories, Line 65
%error="1200013";%:<SERVERNAME>.TestCollection.dbo.prc_DeleteGitRepositories: There must always be at least one repository per Team Project.
Run Code Online (Sandbox Code Playgroud)

总结一下:如我们对此Q/A的评论中所讨论的,最适合用户发票的潜在功能请求.


小智 5

关于如何管理仓库的文档,您不能

如果它是团队项目中唯一的Git存储库,则不能删除该存储库。如果您需要删除团队项目中唯一的Git存储库,请首先创建一个新的Git存储库,然后删除该存储库。

您必须具有“删除存储库”权限才能从团队项目中删除存储库。

看一下这个链接:https : //www.visualstudio.com/zh-cn/docs/git/delete-existing-repo