引言
从SVN说起,想必很多人是从SVN开始进行代码版本管理的,后来有了GitHub,GitHub如果不是开源项目的话是需要付费使用,所以选择使用GitLab,采用在内网搭建GitLab服务的方式,在安装之前,先来说说Git和SVN的区别。
1.Git是分布式的,SVN不是:
这是Git和其它非分布式的版本控制系统(例如SVN,CVS等)最核心的区别。声明下,GIT并非目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。
2.GIT把内容按元数据方式存储,而SVN是按文件:
所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
3.GIT分支和SVN的分支不同:
分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,经常会发生有些分支被遗漏的情况。
然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
4.GIT没有一个全局的版本号,而SVN有
目前为止这是跟SVN相比GIT缺少的最大的一个特征,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。
5.GIT的内容完整性要优于SVN:
GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
一个研发队伍的成员正常包括:需求分析、设计、美工、程序员、测试、实施、运维,每个成员在工作中都有产出物, 包括了文档、设计代码、程序代码,这些都需要按项目集中进行管理的。SVN能清楚的按目录进行分类管理, 使项目组的管理处于有序高效的状态,SVN更适用于项目管理, Git更适用于代码管理。
安装过程:
1.硬件环境
系统:Ubuntu Server 16.04LTS
内存:8G
磁盘:1T
本系统上还安装了 kubernetes docker等。
2.软件环境
Gitlab:参考 :根据官网文档翻译而来,并实际进行安装体验
在线安装Gitlab
1.更新软件源并安装依赖
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
2.安装Postfix邮件通知服务(如果这里不安装,也可在安装完gitlab后进行配置)
sudo apt-get install -y postfix
在Postfix安装期间,可能会出现配置屏幕。选择“Internet Site”并按Enter键。使用服务器的外部DNS作为“邮件名称”,然后按Enter键。如果出现其他屏幕,请继续按Enter键接受默认值。
3.添加GitLab软件包存储库并安装软件包
添加gitlab包存储库
企业版
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
免费版
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
安装gitlab
sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ee
如果下载比较慢:则把EXTERNAL_URL="http://gitlab.example.com"去掉再执行。
安装完会出现成功提示。看到后是不是很赞!!!
初始化 gitlab命令:
sudo gitlab-ctl reconfigure
//经过一系列的执行过程即可成功
到这个步骤就都安装完了。中间会有几个问题。当Http访问本机服务的时候会报502的错误—端口有可能被占用。
记得进行如下修改:
GitLab在使用的过程中,会开启80端口,如果80端口被其他的应用程序占用,则GitLab的该项服务不能使用,所以访问GitLab会失败。大多数皆是此问题。
还要注意gitlab还要使用8080端口,因此要注意可以把gitlab端口改为别的无服务占用的端口。
改gitlab端口:
1.vim /etc/gitlab/gitlab.rb
unicorn[‘port’] = 9091 #9091以下不生效
gitlab_workhorse[‘auth_backend’] = “http://localhost:9091”
nginx[‘listen_port’] = 9099
把前面的注释#去掉。换成想要的端口。
2.vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen “127.0.0.1:9090”, :tcp_nopush => true
修改默认的gitlab nginx的web服务80端
3.vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
listen *:9099;
4. 修改超时时间
gitlab_rails[‘webhook_timeout’] = 90
刷新配置
gitlab-ctl reconfigure
重新启动gitlab
gitlab-ctl restart