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

时间:2016-03-04 10:50:31

标签: tfs tfs2015

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

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

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

有人有建议吗?

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

enter image description here

3 个答案:

答案 0 :(得分:12)

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

  1. 选择代码标签。
  2. 点击显示回购地的下拉列表。
  3. 选择管理存储库。
  4. 点击要删除的仓库旁边的上下文下拉列表。
  5. 选择删除存储库。
  6. enter image description here

    enter image description here

    修改(根据您的修改):

    TFS 2015(更新1)确实为TFS团队项目中包含的Git回购数量设置了明确的最小限制。

    TFS REST api包含的功能可以一起用于删除git仓库,但它不会删除TFS项目中的'last'仓库。

    Here is the general API documentation

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

    1. 获取存储库列表

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

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

      1. 删除存储库,当获得回购ID时,将删除指定的存储库。

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

      2. 不幸的是,在调用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
        }
        

        Exception documentation on MSDN

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

        TFS数据库包含一个删除git repos的存储过程,名为 prc_DeleteGitRepositories ,它需要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'
        

        然而,在指定项目中仅存在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.
        

        总结一下:我们对此问答的评论中讨论的最适合uservoice的潜在功能请求。

答案 1 :(得分:4)

关于如何管理回购的文档,你不能

如果它是团队项目中唯一的Git仓库,则无法删除仓库。如果您需要删除团队项目中唯一的Git仓库,请先创建一个新的Git仓库,然后删除仓库。

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

查看此链接:https://www.visualstudio.com/en-us/docs/git/delete-existing-repo

答案 2 :(得分:3)

你不能直接从用户界面删除它,但我有一个解决方法:只需创建另一个回购,然后你就可以选择删除。

总而言之如果您有多个Repo,那么您可以删除其中一个但如果只有一个,则无法直接从UI中删除它。