我需要给TFS项目的源控制子目录提供TFS项目组贡献者权限。 我可以成功连接到这个组中的某个用户,但无法浏览源代码pipe理,这可能是因为用户无法访问项目的顶层。 有什么办法来configuration访问的方式,不需要给整个项目的读访问权限,或者维护与目标子目录的path中的文件夹共享一个目录的每个文件夹的权限?
澄清:
Project / Folder1 / Folder2 / TargetFolder
我已经给他们设置了权限,但是为了限制只有TargetFolder和它的内容的权限,我需要给组读权限到Folder1和Folder2。 但是因为权限是inheritance的,所以我需要在Project,Folder1和Folder2下的其他文件夹上拒绝这个组。 这是一个维护头痛的问题,如果将来添加新的目录,他们也需要修改权限。
现在没有办法做到这一点。 如果你只是很less做,那么在父文件夹上拒绝的手动过程将是最有效的。
但是,如果这是一个你认为自己经常重复的任务,那么可以使用TFS API创build一个实用程序来为你做。
(沿着这些线路的东西,警告,这没有经过testing)
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('/')); }
当您右键单击文件夹时,请转到“ 属性” ,然后select“ 安全”选项卡 ,您是否看到为该文件夹列出的组?
您应该能够更改单独组的文件夹的读取权限。