dmo*_*dmo 5 troubleshooting permissions team-foundation-server
我需要为 TFS 项目中的源代码管理子目录授予 TFS 项目组贡献者权限。我可以作为该组中的某个人成功连接,但无法浏览源代码管理,大概是因为用户无权访问项目的顶层。有什么方法可以配置访问权限,而不需要授予对整个项目的读取访问权限或维护与目标子目录路径中的文件夹共享目录的每个文件夹的权限?
澄清:
项目 / 文件夹 1 / 文件夹 2 / 目标文件夹
我已经通过授予他们权限来进行设置,但是为了将权限限制为仅 TargetFolder 及其内容,我需要授予组对 Folder1 和 Folder2 的读取访问权限。但是因为权限是继承的,所以我需要在 Project、Folder1 和 Folder2 下的每个其他文件夹上拒绝这个组。这是一个令人头疼的维护问题,如果将来添加新目录,它们也需要更改其权限。
没有办法开箱即用地做到这一点。如果您很少这样做,则拒绝父文件夹的手动过程将是最有效的。
但是,如果您认为这是一项经常重复的任务,则可以使用 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('/'));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |