Comments
登录后评论
Sign In
·

小公司的话基本管理比较混乱,没有做太多权限限制(一般一刀切),大公司做的比较好,以前在华为的时候用的 svn(部分项目),华为对信息安全管理非常严格,甚至可以为了信息安全极大牺牲工作效率,svn 可以控制到文件夹可见性,权限管的严格,到什么地步呢?举个例子:

  • 所有带主机的电脑 USB 口(存储口)都需要一次性贴条封了(被撕开不能再粘上)
  • 定期有信息安全专员检查封口
  • 大部分办公都用云桌面,连主机都不需要了,只要网线、盒子和屏幕
  • 电脑自带一个资产扫描软件(无法关闭),定期检查是否有越权涉密文件
  • 秘密文件、权限都要申请,一般很严格,同时也要求你有相关保护责任(所以除非必须都不会去申请)
  • 实习生基本没有权限,以前实习的时候什么权限都木有,很多内部平台无法登录,工作很困难

当然也有一些项目用 git,甚至自研一些管理工具,增强 git。

·

对于大公司来说,git 的功能还是太欠缺了,比如 google 和 facebook 都是一个代码仓库管理全部代码(对,你没看错),这篇文章有做解释:Why Google Stores Billions of Lines of Code in a Single Repository,这种做法是比较牛逼的,不是 bilibili 那种一个仓库(哈哈 open bilibili),权限管理、代码复用、代码构建可以说效率非常高,他们都是魔改,甚至重造了 git、npm、pip、maven 类似的工具以符合公司代码管理需求。可以看下阮一峰的文章:谷歌的代码管理

·

git 可以控制成员 push 等权限,但不能控制可读性,也就是说所有工作在这个仓库的人都可以读取全部代码,Linus Torvalds 开发 git 出来就是为了开源管理,但是公司代码大部分都是闭源的,git 做集中式管理不方便,如果对权限管理要求较细,可以试试 svn,不过大部分项目可以通过建立多个仓库管理的方式,分包构建的方式缓解这个问题

·
  1. 按模块分仓库、分组、分人、分权
  2. 使用其他 git 权限管理工具,比如 gitolitegitosis

Gitolite是一款Perl语言开发的Git服务管理工具,通过公钥对用户进行认证,并能够通过配置文件对写操作进行基于分支和路径的精细授权。Gitolite采用的是SSH协议并且使用SSH公钥认证,因此无论是管理员还是普通用户,都需要对SSH非常熟悉

可以看到一些工具都是对 “写” 进行控制,而不是 “读”,这是 git 本身限制的,如果要细分目录的读权限,只能上 svn 了

·

我司从两个方面实施吧,一是基于gitgerrit等项目进行适配改造,基本逻辑就是通过接入代码扫描等各类自动化扫描工具,提交之前扫描一遍有没有违规内容,以及架构或者成熟工程师审批;

Gerrit 是建立在Git版本控制系统之上并且基于Web的一个免费开源的轻量级代码审查工具。
作为开发者和Git之间的一层屏障,不允许直接将本地修改内容同步到远程仓库中。
与Jenkins集成后,可以在每次提交代码后,人工审核代码前,通过Jenkins任务自动运行单元测试、构建以及自动化测试,如果Jenkins任务失败,会自动打回本次提交。
一般Git、Gerrit和Jenkins集成后的使用流程
1,开发者提交代码到Gerrit
2,触发对应的Jenkins任务,通过以后Verified加1
3,人工审核,审核通过后code review加2,触发对应的Jenkins任务
4,通过以后确认本次提交,Gerrit执行与Git仓库的代码同步操作
5,代码进入Git仓库

二是分支管理开发,这个内容就比较多了,一般就是开发是一个分支,测试、发版是一个分支,把对应开发、测试、准入环境隔离开。