使用linux系统做一个属于自己的代码仓库3
群组构建
上一节我们已经注册了管理员张三和打工仔李四的账号,下面我们把这两个人拉到一个组里去,在登录界面找到创建群组:


然后我们创建一个主目录工程,比如叫他Boat:

设置完成之后点击创建群组,创建完成后,点开群组的标签就可以看到我们刚刚创建的组。接下来在创建一个组,让他在刚才组的层级下面:

子组也创建好了,接下来我们来拉人头,因为组本身就是我们创建的,所以我们肯定是不需要拉自己进来,那就拉个李四吧。首先在群组页面进入到想让李四参与的组,在左侧找到管理->成员:

在跳转到的页面里找到邀请成员:

点击它然后添加李四进去:

这里可以一次性添加多个成员哦~
添加完成后,设置成员的权限,如果是一次添加多个成员,那么所有成员的权限都是一样的:

至于说这些权限意味着什么:
所有者:权限最高,一般给到项目的创建者
维护者:它实际上是管理者,拥有管理员权限
开发者:一般给到负责写代码改代码的普通打工仔
报告者:只有权限读代码,完全不能够修改
访客:只能看到最外层的结构,完全看不到代码
总之一句话,自下而上是权限越来越小。
这样一来我们的群组就创建好了,需要注意的是,打工人李四虽然不在Boat这个大的群里,但是他在里面的boatControl里,因此他是能够看到Boat的,但是他无法访问除了Boat群组内的boatControl之外的其他Boart群组。我们登录李四的账号,进入Boat群看看:

看到了吗?这个管理标签可是没有成员选项的哦,但如果进入到boatControl,就可以看到成员选项了:

当然,我们还可以用另一种方式验证一下,登录张三的账号,分别在boat和boatControl两个位置点开成员选项:


看到了吧,boat组确实没有打工仔李四在哦~
既然张三给李四拉倒子组以后,李四能够看到所在子组的完整的外层结构,那如果我们张三再开一个组,这个组压根不带李四玩,李四那里还能看到外层结构吗:

可怜的打工仔,看都看不到了
理解群组
忙碌了这么半天,相信大家已经做好自己的群组了,但是肯定会有小伙伴产生这样的疑问,做这个群组有什么意义呢?实际上这样做的好处是组内的成员可以查看组内的代码,但是对于组外的项目则没有权限访问,这种思路是标准的代码隔离,同时也可以避免代码泄露的风险。举个例子来说,张三作为中层领导,可能负责多个部门的业务,比如即负责算法开发又负责网页开发,但是李四就只负责算法开发,李四不应该有权限看到张三的除算法开发外其他工程的代码。实际上,有了这个设定以后,我们再去构建工程,就必须选定工程暴露给哪个组,非组内的成员压根没机会窥见工程的容貌。在这里提醒大家一句,尽量避免用超级管理员账号来做以上的操作,因为权限管理一旦混乱,造成的影响可能是很恶劣的。至于怎么构件工程,马上就要说到了~
vscode链接到gitlab
本节开始之前先交代一个事情[1](#1)
接下来我们首先要找到windows的ssh秘钥。在命令行输入
bash
ssh-keygen -t rsa -b 4096 -C "邮箱@xxxx.com"
首次使用这个指令命令行会让我们输入一个yes或no,选择yes。如果是已经有了ssh秘钥,命令行会提示我们是否覆盖之前的秘钥,建议有秘钥就不要重新生成了哈

出现这个界面就是秘钥已经生成完成了,但是我们还看不懂。接下来进入此电脑,在C盘中找到用户(或users),找到本机正在登录的用户,再进入.ssh文件夹,找到id_rsa.pub用记事本打开就好:

小提示:当前登录用户可以通过在users文件夹下的子文件夹修改时间进行判断,修改时间最近的就是当前登录的账号
将这个文件的所有内容复制下来,来到张三的gitlab界面,点击头像进入偏好设置,进入之后按图找到ssh秘钥

在打开的页面中点击添加秘钥,然后赋值密钥文件的全部内容粘贴进去:


添加之后页面会发生变化:

这个是可以无限制添加秘钥的,如果还要添加更多直接点击添加就好。ssh秘钥相当于本电脑的唯一通行证,将windows的秘钥填入gitlab中就相当于gitlab认识windows电脑并允许跟windows电脑互动了,感兴趣的小伙伴也可以自己试试如何在Ubuntu下制作自己的秘钥。
配置完成后,我们测试下ssh链接,本地开启一个命令行窗口,然后输入ssh -T git@192.168具体的网段
没有问题!
新建gitlab工程
接下来就到了重头戏了,我们用张三创建一个项目。在首页的左侧项目栏中点击项目,然后点击新建项目:

然后点击新建空白项目:

注意这几个位置的内容

如果新建项目之前我们没有创建任何的群组,那么这里的页面会指引我们先创建组。群组的存在还有另外一个功能:它就是电脑上的文件夹。使用电脑时,我们当然可以将所有的文件都无差别的堆到电脑的根目录里,但是这样一定是非常混乱的,因此把不同的文件归类到不同的文件夹就很有必要。我们只以张三的视角来看,它创建的群组完全就是例子中的文件夹,极大的解决代码存放混乱的问题。至于权限,那则是张三分配到下级用户的,下级用户也能在自己的权限内体验到张三将各个工程分门别类带来的便利。类似于Ubuntu系统的普通用户和root用户,各用户都共享了完全相同的目录结构,只是有无权限查看内容的区别。
结语
本节就聊到这里了,本来打算一口气讲完代码提交的,但还是被篇幅限制了。没关系,下一篇已经在路上了,感兴趣的小伙伴快快实操起来~
- 此前的讲解都来自于原生的Ubuntu做的gitlab仓库,原本是用https协议做的本地到gitlab的连接,但是这样处理起来比较麻烦,最终还是回归到了ssh协议,也因此代码仓库从原生Ubuntu换成了虚拟机。这当然不影响实际操作,只是后面附带的图片管理员名字可能和文字对不上,不过没关系,图片仅供参考就好 ↩︎