将权限委托给TFS项目中的子文件夹

将权限委托给TFS项目中的子文件夹

我需要授予 TFS 项目组贡献者对 TFS 项目中源代码控制子目录的权限。我可以作为该组中的某个人成功连接,但无法浏览源代码控制,大概是因为用户无权访问项目的顶层。有没有办法配置访问权限,而不需要授予对整个项目的读取权限或维护与目标子目录路径中的文件夹共享目录的每个文件夹的权限?

澄清:

项目 / 文件夹 1 / 文件夹 2 / 目标文件夹

我已经通过授予他们权限进行了设置,但为了将权限限制为仅对 TargetFolder 及其内容,我需要授予该组对 Folder1 和 Folder2 的读取权限。但由于权限是继承的,我需要拒绝该组其他所有文件夹在 Project、Folder1 和 Folder2 下。这是一个维护难题,如果将来添加新目录,它们也需要更改其权限。

答案1

没有现成的方法。如果您只是偶尔这样做,那么在父文件夹上手动拒绝的过程将是最有效的。

然而,如果您认为这项任务会经常重复执行,那么您可以使用 TFS API 创建一个实用程序来为您完成此任务。

(类似这样的内容。警告,这尚未经过测试)

vcs = //...VersionControlServer reference...

string checkinPath = @"$/MyProject/Sources/Whatever";
string identityName = @"[MyProject]\Contributors";
string[] removesNone = new string[]{ };    
string[] allowsNone = new string[]{ };
string[] deniesNone = new string[]{ };
string[] allowsCheckin = new string[]{ PermissionChange.ItemCheckin };
string[] deniesCheckin = new string[]{ PermissionChange.ItemCheckin };


PermissionChange pc = new PermissionChange(
    checkinPath, identityName, allowsCheckin, deniesNone, removesNone);

vcs.SetPermissions(new SecurityChange[]{ pc } );

// walk up the path denying on parent folders
checkinPath = checkinPath.Substring(0, checkinPath.LastIndexOf('/'));
while (checkinPath.Length > 2)
{
        PermissionChange pc = new PermissionChange(
            checkinPath, identityName, allowsNone, deniesCheckin, removesNone);

        vcs.SetPermissions(new SecurityChange[]{ pc } );

        checkinPath = checkinPath.Substring(0, checkinPath.LastIndexOf('/'));
}

答案2

当你右键点击在文件夹中,转到特性然后是“安全”选项卡,您看到该文件夹​​列出的组了吗?

您应该能够更改不同组的文件夹的读取权限。

相关内容