最近由于工作需要,开始设计和实现一些新的运维工具,打算使用git替代svn来管理代码,尝试一些不同的技术。
git和svn的区别网上有很多的介绍了,况且已经不是什么太新的技术,如下是一些简要说明。 (摘自: http://blog.csdn.net/w13770269691/article/details/38705473/)
svn是集中化的版本控制系统, 只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
git是分布式的版本控制系统,每一个终端都是一个仓库,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。每一次的提取操作,实际上都是一次对代码仓库的完整备份。
git领域最有名的就是Github,这里我们采用了一个开源版本,GitLab,搭建环境: 1.操作系统:Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.GitLab安装包:gitlab-ce-8.11.5-ce.0.el6.x86_64.rpm
GitLab的两种安装方法: 摘自:https://segmentfault.com/a/1190000002722631 • 编译安装 优点:可定制性强。数据库既可以选择MySQL,也可以选择PostgreSQL;服务器既可以选择Apache,也可以选择Nginx。 缺点:国外的源不稳定,被墙时,依赖软件包难以下载。配置流程繁琐、复杂,容易出现各种各样的问题。依赖关系多,不容易管理,卸载GitLab相对麻烦。 • 通过rpm包安装 优点:安装过程简单,安装速度快。采用rpm包安装方式,安装的软件包便于管理。 缺点:数据库默认采用PostgreSQL,服务器默认采用Nginx,不容易定制。
采用rpm包安装是最快捷的方法,之前有些准备工作:
代码语言:javascript复制sudo yum install openssh-server
sudo yum install postfix
sudo yum install cronie
sudo service postfix start
sudo chkconfig postfix on
sudo lokkit -s http -s ssh
安装rpm包:
代码语言:javascript复制rpm -ivh gitlab-ce-8.11.5-ce.0.el6.x86_64.rpm
修改配置文件/etc/gitlab/gitlab.rb,其中external_url = ‘http://git.example.com‘需要设为本机IP。
重新生效配置:
代码语言:javascript复制sudo gitlab-ctl reconfigure
此时就可以登录http://部署IP,账号:
代码语言:javascript复制Username: root
Password: 5iveL!fe
可以自行重置密码操作。
再分享一个测试过程中碰见的小问题, 问题描述: 使用bisal用户创建了一个repository叫hellogitlab,又创建了一个phibisal用户,本地克隆了远程库:
代码语言:javascript复制git clone http://x.x.x.x/bisal/hellogitlab.git
打算用这个用户提交,
代码语言:javascript复制git push origin master
Username for 'http://x.x.x.x': phibisal
Password for 'http://phibisal@x.x.x.x':
Counting objects: 3, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to push code to protected branches on this p
roject.
To http://x.x.x.x/bisal/hellogitlab.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'http://x.x.x.x/bisal/hellogitlab.git'
再查看下分支的权限设置:
提示merge和push只有Masters角色可执行,phibisal的角色是Developers,因此禁止直行push操作。
所以需要将push的权限授予Developers即可。
再次执行push,
代码语言:javascript复制git push origin master
Username for 'http://x.x.x.x': phibisal
Password for 'http://phibisal@x.x.x.x':
Counting objects: 3, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://x.x.x.x/bisal/hellogitlab.git
e1ea43e..cd850d6 master -> master
总结: 1.gitlab的rpm安装过程还是比较简单,数据库、rb都是默认安装了。 2.对于git的使用,强调和SVN最大的不同就是分布式,不会像SVN集中式下对于网络的强烈需求,这点还需要继续体验。