|
由于实行CMMI规范,我对配置库进行了组织级的划分以及按角色进行权限划分。大致分为开发库、受控库、产品库,各个库下包括项目管理、配置管理、质量保证以及工程类文件夹。由于角色权限可能细化到3级或者更深的子目录,所以如果手动去分配的话,一天估计全干这毫无技术含量的事了,所以最后研究了TFS的命令以及数据库,形成了自动化批处理脚本。具体见下:- rem 创建项目级组
- Y; g4 L& A$ ?' F+ W; m - TFSSecurity /gc "vstfs:///Classification/TeamProject/0922675d-86b3-414e-812f-5d7c069a212b" "PM" "项目负责人" /collection:*# u% d* ~- l0 ^% ]
- 这命令是创建项目角色
复制代码- rem 赋予项目可读的权限9 h, _9 y! ?" q. G. H# e- j
- TFSSecurity /a+ $PROJECT:vstfs:///Classification/TeamProject/0922675d-86b3-414e-812f-5d7c069a212b GENERIC_READ n:[DefaultCollection]\CEO allow
" I6 Z) b& L1 l - /collection:*
5 n* [3 Q1 }& G1 m& r5 w% ` - 这命令是设置新建组的权限
复制代码- TFSSecurity /a+ CSS vstfs:///Classification/Node/850e5c5b-18c7-40aa-a19d-7c97d9c34518 WORK_ITEM_WRITE n:[DefaultCollection]\CEO allow /collection:* U. X1 C. G: W8 p
- 这命令是赋予组编辑工作项的权限
复制代码- rem 赋予团队查询的权限% I6 a( L; z8 i9 @
- TFSSecurity /a+ WorkitemQueryFolders $/0922675d-86b3-414e-812f-5d7c069a212b/F5174D3B-2C11-498E-9EA0-63AE960459E5/ READ n:[DefaultCollection]\CEO allow /Collection:http:*
+ F) X. p6 {. s$ G$ X - 这命令是赋予组对团队查询可读,$/0922675d-86b3-414e-812f-5d7c069a212b/F5174D3B-2C11-498E-9EA0-63AE960459E5/ 这个参数比较特别,“/“的前半部的是项目属性Url,后半部是通过查询获得:SELECT a.id FROM [Tfs_DefaultCollection].[dbo].[QueryItems] a, [Tfs_DefaultCollection].[dbo].[TreeNodes] b where a.Projectid=b.id and b.Name=N'项目名称' and a.name=N'团队查询'
复制代码- tf permission /allow:Read,PendChange,Checkin,Lock /group:[DefaultCollection]\CEO $/项目名称/开发库/01.项目管理 /collection:** ]7 Q: t! E% H
- tf permission是负责分配具体的角色
复制代码 这是批处理命令的全部核心。需要说明的,对于在项目中新建的组,该组没有任何权限,如果要组成员有正常使用TFS的权限,需要设置组的权限:
1 v% @+ T/ d7 U- m& {1.在“安全性”里设置对项目可见/ F- O" S6 [5 o0 J: r8 t+ J" m0 x0 q
2.在“区域迭代”里设置工作项可编辑和读取9 t5 d2 ~# J8 P( s2 c8 K; B$ S
3.最重要也是最容易忽略的一点,还要设置“团队查询”只读(VS2010中可通过“团队查询”--“安全性”手动设置)
; f& d5 y) j4 K0 M
8 M9 ]/ ]% U8 a4 ^9 i. w; t我这没说那么详细,目的是让大家自己去研究下,否则别人的始终是别人的,自己最后啥都不会。
) w8 S: B' {$ ^5 e: ? I$ z |
|