我正在尝试删除TFS 2015 Update 1中的Git存储库。存储库是使用新的Git and TFVC in the same project功能在现有TFVC团队项目中创建的。但是,我可以轻松地使用TFS门户创建Git存储库(使用“代码”选项卡),我无法在TFS门户或基于命令行的功能中找到任何功能来删除Git存储库。此外,当我浏览“管理存储库...”时,我找不到名为“删除存储库”的功能。
我没有运气谷歌搜索和搜索MSDN页面。
所以我不想删除整个团队项目(因为它包含很多源代码,工作项和历史记录),但只是一个空的Git存储库。
有人有建议吗?
编辑#1 当只有一个Git存储库保留在特定团队项目中时,似乎没有启用应在管理页面中显示“删除存储库”选项的子菜单(参见屏幕截图)。对于记录:当存在两个或更多Git存储库时,它是可见的。
答案 0 :(得分:12)
当项目中有多个git repos时,实际上非常简单:
修改(根据您的修改):
TFS 2015(更新1)确实为TFS团队项目中包含的Git回购数量设置了明确的最小限制。
TFS REST api包含的功能可以一起用于删除git仓库,但它不会删除TFS项目中的'last'仓库。
Here is the general API documentation
删除git仓库涉及的两个功能是:
获取存储库列表
(GET VERB)https:// {instance} / defaultcollection / [{project}] / _apis / git / repositories?api-version = {version}
当给出项目名称时,返回包含git repos列表及其repo ID的json。
删除存储库,当获得回购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
}
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中删除它。