一、基础数据说明
1. 代码目录存在多级
图1-1 SVN目录
如图1-1:
- 第一级目录是 科顺,代表 科顺项目,项目文件包括 文档、代码等等。
- 第二级目录 分别是
- 2.1 resources 用于存放文档,开发和实施均需要用到。
- 2.2 trunk 用于存放代码,此目录供开发人员使用。
- 2.3 tags 用于存放代码备份,此目录开发经理 使用。
3. 第三级目录,仅此trunk下的文件夹做说明,用于存放不同模块的代码(我们内部称之为子产品)。
4.第四级目录,是一个模块的代码(即一个子产品),一个子产品可以包括多个页面,也可以包含多种技术栈,例如 基于ANDROID开发的PDA, 基于 VUE的前端工程。不同的技术栈的开发使用不同的目录存放代码。
2. 角色存在多级
图1-2-1 角色层级1
图1-2-2 角色层级2
如图1-2-1 和 图1-2-2所示,
- 第一级角色 BS_PROJECTS ,这个角色用于关联所有参与项目交付的人员,包括 开发、实施、测试 等人员。
- 第二级角色 BS_PROJECTS_XXX , XXX 通常为客户名称的首字母,该角色用于关联这个项目所有人员。
- 第三级角色 BS_PROJECTS_XXX_Android 用于关联参与XXX项目的Android 开发人员。
二、希望的控制效果
- 参与项目的人员 都能进入SVN项目目录
- 只有参与这个项目的人员 才能读写对应项目的文档和代码。
- 实施可以读写文档,开发可以读写文档 并读写代码。
- 不同技术栈的开发,只能读写相应技术栈的代码。
三、规则说明
要实现上面的控制效果,我们需要充分理解SVN的权限设置规则,下面结合例子讲规则。
1、多级文件夹
a. 继承与覆盖
【文件夹层级】: Repositories/BS_Projects/科顺
- BS_Projects包含了多个项目,每个项目是一个文件夹,比如“科顺”是其中一个文件夹。
【角色层级】:BS_PROJECTS、BS_RPJECTS_KS、BS_PROJECTS_KS_Portal
- BS_PROJECTS 所有的开发人员;
- BS_RPJECTS_KS 参与科顺项目的开发人员;
- BS_PROJECTS_KS_Portal 科顺项目BS前端的开发人员;
- BS_PROJECTS_KS_Service 科顺项目后端的开发人员;
- BS_PROJECTS_KS_WPF 科顺项目WPF界面开发人员
- BS_PROJECTS_KS_Android 科顺项目Android界面开发人员
【继承逻辑】
- 上级文件夹(BS_PROJECTS)设置了 角色Designer的访问权限,下级文件夹(BS_PROJECTS_科顺)继承了访问权限;
- 继承过来的角色权限,如上图在角色图标上不带红色星号;在本级文件夹设置的角色权限,角色图标上会带红色星号。
【覆盖逻辑】
- 所有的 BS_PROJECTS角色 对 BS_PROJECTS文件夹(上级文件夹)有访问权限;
- 但在 BS_PROJECTS/科顺 这一级文件夹里,去除了其它项目成员的读写权限,只保留了科顺项目组开发的读写权限。
2、同级文件夹多个角色
a. 多个角色取并集
【优先级】
如图本级目录为BS_PROJECTS/科顺/trunk, 带*的设置为本级设置,不带星的为继承过来的设置,本级设置优先级大于继承设置。
【并集】
本级设置里取并集, 即本级设置了两个角色,这两个角色同时包含开发人员张三,一个角色是无权,一个角色是有权,那最终结果是有权。
b. 角色与用户取并集
如图:lxz 为开发人员账号,BS_PROJECTS_KS_Android 为角色。
【优先级】
在SVN权限设置里,如果本级为用户设置了权限,同时本级也为角色设置了权限。并且这个角色包含这个用户,那么 这两个设置没有优先级区分,按有权的并集处理。
【并集】
用户设置无权,角色设置有权,按并集逻辑,这个用户一样是有权的。
四、建议设置
- 角色、用户结合业务群组建多层级;
- 代码目录在不同层级里,使用子文件夹 覆盖 父级 设置