【问题标题】:TFS 2012 API - Set Version Control Permissions?TFS 2012 API - 设置版本控制权限?
【发布时间】:2016-01-16 03:20:50
【问题描述】:

我正在尝试通过 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 的第三个参数(“允许”参数)中使用的值,以便设置各种事情,例如签入、管理分支等。MSDN 文档含糊不清。

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

“允许”参数的描述简单地说:

    allow
    Type: System.Int32

非常感谢任何帮助。

【问题讨论】:

    标签: tfs tfs-sdk


    【解决方案1】:

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

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

    【讨论】:

    • 你可以|这些枚举值一起组合权限。
    【解决方案2】:

    你可以像这样使用 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);
    

    【讨论】:

    • 感谢实际列出此枚举的所有可用值。
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 2011-09-14
    • 2013-10-30
    • 2020-01-08
    • 2019-08-20
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多