部署GitLab代码托管仓库
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,GitLab是使用Ryby开发的一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找,本博文内容将介绍Git,GitLab,的区别以及SVN与GitLab的差异,然后就是通过Yum包快速的搭建一个GitLab环境.
Git 与 SVN 区别点
1、GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别.
2、GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里.
3、GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录.
4、GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征.
5、GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法.这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏.
大部分公司的处理流程如下:
PM在gitlab创建任务,分配给开发人员.
开发人员领取任务后,在本地使用git clone拉取代码库.
开发人员创建开发分支(git checkout -b dev)并进行开发.
开发人员完成之后,提交到本地仓库(git commit).
开发人员在gitlab界面上申请分支合并请求(Merge request).
PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master).
开发人员在gitlab上Mark done确认开发完成,并关闭issue.
搭建GitLab
1.安装依赖包文件从10.x以后开始依赖policycoreutils-python.
[root@localhost ~]# yum install -y curl openssh openssh-server openssh-clients postfix cronie policycoreutils-python |
2.通过下载一个RPM包来安装,GitLab实在不需要源码安装,步骤很恶心.
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-CE-10.0.0-ce.0.el7.x86_64.rpm |
3.修改gitlab的配置文件/etc/gitlab/gitlab.rb
编辑如下.
[root@localhost ~]# vim /etc/gitlab/gitlab.rb |
4.使用gitlab-ctl reconfigure
自动安装数据库,初始化信息,初始化配置时间较长.
[root@localhost ~]# gitlab-ctl reconfigure |
5.使用gitlab-ctl start
启动GitLab服务,如下所示.
[root@localhost ~]# gitlab-ctl start |
6.修改配置文件,添加smtp邮件功能,此处我们直接拷贝到最后一行就行.
[root@localhost ~]# vim /etc/gitlab/gitlab.rb |
7.重新配置GitLab,重启服务,后期也可以使用这些命令管理GitLab.
[root@localhost ~]# gitlab-ctl reconfigure |
8.使用gitlab-rails console
命令进行发送邮件测试,如下所示.
[root@localhost ~]# gitlab-rails console |
9.此处就配置好了,访问一下Web页面看看吧.
[root@localhost ~]# curl http://192.168.1.5 |
10.忘记密码后的找回,可以参考一下内容.
[root@localhost ~]# gitlab-rails console production |
Git的使用技巧
推送文件内容: 如果想要推送文件到指定仓库,可执行以下操作.
[root@localhost ~]# cd /public |
文件的提交(标准): 在客户端上进行如下操作,将客户端文件上传到GitLab的仓库.
[root@localhost ~]# git global setup |
远程仓库相关命令:
[root@localhost ~]# git clone git://github.com/lyshark/lyshark.git #克隆远程仓库 |
分支(branch)操作相关命令
[root@localhost ~]# git branch #查看本地分支 |
版本(tag)操作相关命令
[root@localhost ~]# git tag #查看版本 |
Git常用命令汇总
[root@localhost ~]# git branch #查看本地所有分支 |
SVN服务器搭建(拓展)
SubVersion(简称SVN)是一款自由开放的版本控制软件,SubVersion可以管理文件,文件夹以及记录它们的修改状况.Subversion常用来帮助我们管理软件开发的源代码或是公司手册文档.Subversion通过将文档导入至版本库中进行管理,版本库类似于文件服务器,但比文件服务器更强大的是,它可以记录用户每一次对文件或目录的修改状况,并提供还原数据至老版本的功能,版本控制对于软件开发而言是至关重要的,现在的软件开发一般作为项目进行,一个项目中会有很多人参与,那么每个人手中都有自己的一份修改备份.
◆服务端搭建◆
1.通过YUM仓库快速安装SVN软件,这种软件无需编译安装.
[root@localhost ~]# yum install -y apr apr-util subversion |
2.下面我们将在/var/svn/
目录下,创建一个my_project
版本库.
[root@localhost ~]# mkdir -p /var/svn |
2.接着我们将本地/etc
目录下的资源导入至var/svn/my_project
中,其中-m
参数是描述信息.
[root@localhost ~]# svn import /etc file:///var/svn/my_project/ -m "Inital Data" |
3.认证授权操作,服务器会根据版本库目录下的./conf/svnserver.conf
文件进行权限的控制.
[root@localhost ~]# vim /var/svn/my_project/conf/svnserve.conf |
4.配置一个passwd密码文件,默认在conf目录下,写入需要认证的用户数据.
[root@localhost ~]# vim /var/svn/my_project/conf/passwd |
5.接着我们来定义一下组的权限配置列表,与组的管理员列表.
[root@localhost ~]# vim /var/svn/my_project/conf/authz |
6.启动svnserver服务器,并通过-r
选项指定一个虚拟路径.
[root@localhost ~]# svnserve -d --listen-port=3690 -r /var/svn/ |
◆客户端操作◆
克隆版本库: 从/var/svn/my_project
版本库克隆一份到本地的./my_project
目录.
[root@localhost ~]# svn checkout file:///var/svn/my_project/ ./my_project |
发布数据: 将本地工作副本./my_project
修改后的内容发布到版本库中.
[root@localhost ~]# svn commit -m "My_project" ./my_project/ |