TFS 2012 API - 设置版本控制权限?

时间:2013-02-04 17:20:24

标签: tfs tfs2012 tfs-sdk

我正在尝试通过TFS API设置TFS项的各种版本控制权限。以下是我正在使用的代码,它成功设置了给定文件夹路径的读取和签出权限:

        IIdentityManagementService ims = tpc.GetService<IIdentityManagementService>();
        TeamFoundationIdentity userIdentity = ims.ReadIdentity(IdentitySearchFactor.AccountName,
                                                "Guest",
                                                MembershipQuery.None,
                                                ReadIdentityOptions.IncludeReadFromSource);

        ISecurityService ss = tpc.GetService<ISecurityService>();
        SecurityNamespace securityNamespace = ss.GetSecurityNamespace(SecurityConstants.RepositorySecurityNamespaceGuid);

        securityNamespace.SetPermissions(folderPath, userIdentity.Descriptor, RegistryServicePermissions.AllPermissions, 0, true);

我不明白的是在SetPermissions的第3个参数(“allow”参数)中使用的值,以便设置各种内容,例如checkin,manage branch等.MSDN文档变化模糊。< / p>

    public abstract AccessControlEntry SetPermissions(
            string token,
            IdentityDescriptor descriptor,
            int allow,
            int deny,
            bool merge
    )

“allow”参数的说明只是说:

    allow
    Type: System.Int32

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

allow的内容应该是您要对此特定身份允许的确切权限的值,例如。 VersionedItemPermissions.Read

因为它是枚举,所以它被列为int32,因为枚举支持TFS中的各种实体,即构建,版本控制,工作项跟踪等。

答案 1 :(得分:1)

你可以像这样使用int参数:

    int allow = (int)Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Read;
    int deny = (int)(Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.AdminProjectRights |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Checkin |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.CheckinOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.PendChange |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Label |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.ReviseOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.LabelOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Lock |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.ManageBranch |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Merge |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.UndoOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.UnlockOther);
相关问题