使用 TFS 对象模型时,可以使用 VersionControlServer.SetPermissions 方法设置项级 ACL。此方法采用 PermissionChange 继承的 SecurityChange 对象数组。PermissionChange 类为 Allow 权限、Deny 权限和 Removes 获取字符串数组(以便将某个权限重置为未设置)。然后可以使用 VersionControlServer.GetPermissions 方法查看这些项目级权限。
当使用 VersionControlServer.SetPermissions 方法设置项目级权限时,将创建一个新的权限对象,并将 ServerItem 设置为该项目的服务器路径。权限对象有一个 Entries 属性,该属性包含在源代码管理中的项目上方定义的每个用户或组的条目,即使该用户或组的所有权限都是继承的。此外,即使重置之前在项目上设置的权限,权限对象仍保留在服务器上,即使它不包含未继承的条目。
简而言之,随着时间的推移,这些权限对象的大小似乎在严格增加。由于返回了大量信息(例如,在分支级别),这些方法的性能开始受到影响,而且我不知道有任何类型的 RemovePermissions 方法可以清理这些信息。这样的事情存在吗?我怎样才能永久删除这些,以便项目只是透明地继承它们的 ACL,而没有在服务器上定义这些杂乱的对象?