如何在TFS Git中启用“有限引用”?

时间:2019-06-14 12:43:02

标签: git tfs

Microsoft在有关Git的大量文章中提到this博客,其中讨论了一个称为“有限引用”的概念。对于限制每个用户可以看到哪些服务器分支,以在基于非分叉的TFS Git服务器配置中提供更有条理的客户端体验来说,这似乎是一个非常有用的功能。

不幸的是,这篇文章忽略了提及如何使用所述功能,而我在网上找不到的其他信息似乎都没有对此进行记录。我自己做了很多工作,并在TFS SQL DB中发现了prc_UpdateGitLimitedRefCriteria存储过程,该过程将记录添加到表中以将过滤器应用于返回给客户端的ref,但是仅向该表添加信息是不够的。必须有一些我找不到的开/关开关。

有人能启用“受限引用”功能吗?如果可以,您该怎么做?

1 个答案:

答案 0 :(得分:1)

因此,在广泛研究数据库之后,我设法找到了一个解决方案。我找不到通过UI进行操作的方法,但是要使其正常工作,必须在数据库中完成两个关键操作。

首先,您需要启用此功能,该功能已在存储库设置中启用。虽然我无法在UI中找到设置,但是如果您从存储库的默认设置中进行了任何调整,则JSON对象将保存到dbo.tbl_PolicyConfigurationRevision表中,该表包含一个将为null的“ optimizedByDefault”元素,请从将null设置为true,现在将在所讨论的仓库中启用该功能。

或者,可以使用here中所述的TFS Rest API的“策略配置”端点来完成此操作。它涉及的更多,并且仍然涉及到JSON的调整,但是它经过正式公开的渠道,而无需直接的DB操作,并且可以正确地对配置更改进行版本控制。

第二,您需要指定“重要”引用是什么。有一个存储的proc和自定义数据类型可以帮助您解决此问题。 dbo.prc_UpdateGitLimitedRefCriteria接受partitionId,dataspaceId,repositoryId和两个精确匹配匹配和namespaceRefs匹配的自定义表数据类型记录。用重要的引用建立表,然后调用存储的proc将它们添加到列表中。

看来,这最终要通过prc_QueryGitRefs存储的过程来过滤ref,因此,如果需要更多有关如何格式化它们的详细信息,以便可以正确处理,则可以在其中查看。

经过更多的实验后,似乎没有一个针对受限RefCriteria的未记录API端点,该端点也支持获取和更新引用标准。

# my_child.py
import os
import sys

pipename = sys.argv[1]
while True:
    with open(pipename, 'rb') as p:
    print(p.read())

有趣的是,一旦我知道“ optimized”关键字,就好像在回购名称中使用_optimized一样,本文中所描述的使用_full也可以逆转此功能。例如:

 /tfs/*collectionName*/_apis/git/repositories/*repositoryId*/limitedRefCriteria

如果默认情况下未启用该功能,但使用_optimized路径,它将返回已过滤的分支。对于那些不想对设置json进行调整并且只希望通过存储的proc将记录添加到受限引用标准的人来说,这也许是一条更安全的路径。

豫ICP备18024241号-1