权限管理篇

权限管理是代码托管平台的核心功能之一

概述

权限管理的维度有两种:

  • 代码库级别,例如:baidu/icode/portal
  • 二级目录级别,例如:baidu/icode

权限的类型有四种:

  • 管理员
  • 可写权限
  • 可读权限
  • 其他(未设置权限的人)

auth.png

权限等级:管理员>可写>可读>其他,上级权限拥有所有的下级权限,一个人对一个代码库只能拥有一种权限。

错误Case:小明是某个git仓库的管理员,有一天小明想要提交代码,故去iCode给自己加了“可写权限”。

点评:小明没有领悟到“上级权限拥有所有的下级权限”这个点,当小明给自己赋予“可选权限”的同时他也失去了管理员的身份。

权限模型

权限 管理员 其他 解释
读代码 下载代码库或者通过icode网页浏览某个分支代码
发评审 向某个分支发评审
提交代码 得到+2评分后,通过icode网页提交代码
新建分支 拉出一个新分支
删除自己的分支 删除自己新建的分支
删除任意分支 删除某个分支
评审+2 通过icode网页为某个评审打分,打分为+2表示评审通过,-2、-1、1均表示未通过评审
新建标签 建立一个新标签
其他git库 push一个全新的分支到代码库
代码导入 将某个git库的代码和历史一同导入icode上的git库
iCode库 注:不需要评审
修改代码库设置和权限 修改代码库的设置、提交规则、权限、删除代码库

这里提到的“分支”均指远程仓库的分支,与本地仓库分支无关

权限等级及职责

权限 定义
管理员**(修改配置和权限;+2评分;提交代码)** 代码库的负责人。管理员只能针对库级别设置,不能再目录级别设置。除了具备【写】的权限外相比,独有的权限:
修改代码库配置管理代码库各级权限删除任意分支删除任意标签废弃任意评审将某个git库的代码和历史导入icode git库
写(+2评分;提交代码) 代码库开发者。除了具备【读】的权限外,独有的权限:
给出+2评分提交代码
读(发评审;得到+2评分后提交代码) 代码库开发者。与【其他】相比,独有的权限:
可以访问私有库得到+2评分以后,可以提交代码
其他 代码库的可选参与者权限限制:
只能访问公司内部公开的代码库

权限的默认规则

我们将baidu/xxx这样的二级路径称为目录,将baidu/xxx/yyy这样的三级路径称为代码库,目录是多个代码库的集合。

规则

  • 拥有目录一级权限的人同时拥有目录下所有代码库的对应权限

举例:[zhangsan]同学拥有目录baidu/lalala的写权限,同时[zhangsan]就会拥有名为baidu/lalala/*的任意代码库的写权限

  • 目录下的代码库可以设置不继承目录的写成员和读成员,但必须继承目录的管理员
  • 默认只有目录维度的成员(包括:管理员、写、读)才能创建代码库,其他人都不能创建代码库
  • 在目录下可以关闭此限制,关闭后所有人都可以在此目录下创建代码库
  • 代码库的创建者会成为代码库的第一个也是唯一一个管理员
  • 没有专门创建目录的功能,目录是伴随目录下的第一个代码创建而自动创建的,创建人会成为目录和代码库的管理员

权限申请与管理

作为小白如何申请Git代码库的各种访问权限

默认:所有企业内用户对“公开”的代码库有只读和发评审的权限,对保密模块没有任何权限

请直接联系代码库任意一个【管理员】申请成为代码库的【管理员】或【可写】或【可读】

作为产品/团队负责人如何申请目录管理员、写、读权限

为了便于团队管理权限,于2017年初上线了目录管理权限的能力。在此之前已经创建的二级目录,管理员为空,需要的话,请联系平台管理员。

新建目录的第一人,会成为默认的目录管理员,可以给其他人添加目录维度的权限。

若目录管理员为空怎么办?为什么设计如此麻烦的申请过程?

推选一位合适的目录管理员,先让这位同学成为目录下面所有代码库的管理员,然后联系icode平台管理员将其加为目录管理员。

出于安全的考虑。早先iCode并不支持目录管理权限,任何人都可以在任何目录下创建代码库,这就导致一些目录下同时包含了两个团队/产品的代码库。故为了保证代码权限不扩散,我们出了这个严格的审计流程。

作为管理员如何给他人添加/删除权限

进入代码库页面,切换到“权限设置”页面即可。

image.png

注意事项

  • 加入管理员组就会有管理员的权限,加入写/读组就会有写/读的权限。
  • 只能以个人为单位加权限。
  • 具有管理员权限的人可以将新人加入到管理员组或写权限组或读权限组。
  • 代码库至少存在一个管理员。

变更审计

在“变更审计”页面提供查看代码库权限和类型变更的历史记录,仅代码库的管理员可以查看。