版本控制与代码托管
版本控制与代码托管
市面上比较有名的Git服务提供商,大概就是GitHub,BitBucket,GitLab,以及国内的Coding.net和码云
现有的服务商,对于免费的套餐都有一定的限制,比如GitHub只允许建立免费的开源repository,不允许建立私有的仓库。BitBucket允许建立无限制的私有项目,不过对于项目中参与的开发人员是有人数限制的。
自己搭建私有的Git服务
12 款各种编程语言实现的 Git 代码托管系统
GUI Clients
Git客户端:
- GitKraken安装后占用230M空间,占用的内存很大600M,需要进行登录。
- Cycligent Git Tool: 不错,支持Git Flow。但是占用磁盘空间173M;需要进行登录。
- SourceTree,这个软件不错;但是不支持Linux。
- SmartGit,使用非商业版时,会将你的相关信息附加在每次提交中;您的非商业许可证将与您配置的Git身份(在.gitconfig或.git / config中)绑定,并转移到syntevo.com进行注册。 安装时的非商业版本的选项是最后一个:Non-commercial use only。
- gitg: 进行文件对比和查看日志就够了。其它的Linux下还是直接使用命令。
- linux下git-cola还行: sudo apt install git-cola
可在Linux中下载Wine,以使用相关软件。
Git
也可直接使用Git搭建服务(命令行形式)。但是门槛高。
git服务器搭建 使用git + gitolite3方式
GitHub
GitLab
GitLab.com offers free unlimited (private) repositories(无限制的私有库) and unlimited collaborators(合作者).
使用GitLab搭建私有的代码托管服务。如今提供了GitLab CE Omnibus package安装包可方便快捷的安装。
说到github的克隆实现,最出名的莫过于gitlab。这是一个ROR的实现,应该是目前市面上最成熟的一个github克隆项目,功能也是最丰富的。它在原来最基础的git库管理、权限管理、用户管理的基础上又加入了诸如code review、ci等极大方便开发者的功能。 Gitlab是一个用Ruby on Rails开发的开源项目管理程序,可以通过WEB界面进行访问公开的或者私人项目。
GitLab搭建以及配置
GitLab 中文文档(源码安装和Omnibus GitLab安装说明)
在自己的服务器上部署 GitLab 社区版
GitLab中文网站
不支持Windows系统:GitLab is developed for Unix operating systems. GitLab does not run on Windows and we have no plans of supporting it in the near future. Please consider using a virtual machine to run GitLab. 不支持OS X、Fedora、Gentoo、Arch Linux、FreeBSD
安装时的注意事项:
- 国内用户可使用镜像下载安装,见Gitlab Community Edition 镜像使用帮助
- GitLab默认使用Postfix作为邮件系统,在安装过程中,如果我们需要系统往外网邮箱发送邮件,记得在配置的时候,选择”Internet Site”。
- 如果使用自定义的域名,需要在/etc/gitlab/gitlab.rb中修改并配置external_url选项。保存之后,用 sudo gitlab-ctl reconfigure 命令使之生效。
GitLab由以下服务构成:
- nginx:静态Web服务器 GitLab 内置Nginx (默认监听80端口)
- gitlab-shell:用于处理Git命令和修改authorized keys列表
- gitlab-workhorse:轻量级的反向代理服务器
- logrotate:日志文件管理工具
- DataBase:数据库 官方推荐 postgresql,但也可以是MySql
- redis:缓存数据库
- sidekiq:用于在后台执行队列任务(异步执行)
- unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
[root@centos7 ~]# rpm -i gitlab-ce-8.16.4-ce.0.el7.x86_64.rpm
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:
sudo gitlab-ctl reconfigure
gitlab: GitLab should be reachable at http://localhost
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab:
gitlab: GitLab now ships with a newer version of PostgreSQL (9.6.1), and will be used
gitlab: as the default in the next major release. To upgrade, RUN THE FOLLOWING COMMANDS:
sudo gitlab-ctl pg-upgrade
gitlab: For more details, please see:
gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server
gitlab:
It looks like GitLab has not been configured yet; skipping the upgrade script.
安装好gitlab后,
通过http服务进行访问,http默认端口为80,注意避免端口冲突(Nginx,Apache,Tomcat)
可参考Omnibus GitLab documentation中的Nginx配置,配置Nginx的监听端口;在/etc/gitlab/gitlab.rb文件中修改 external_url "http://localhost:8081"
更改之后重新配置gitlab。
然后在防火墙中打开8081端口。更改之后重新加载firewalld。
sudo firewall-cmd --permanent --add-port=8081/tcp
sudo systemctl reload firewalld
sudo gitlab-ctl reconfigure
运行sudo gitlab-ctl reconfigure
对GitLab进行重配置以启动GitLab。
由于使用root用户执行上面的命令,出现如下信息:
/opt/gitlab/××× /var/opt/gitlab/×××)
- change mode from '' to '0755'
- change owner from '' to 'root'
- change group from '' to 'root'
然后在浏览器中进入。
用户名和密码: The default account's username is root. Provide the password you created earlier and login. After login you can change the username if you wish.
Name: Administrator –> Fan Dean
用户名:root –> Fan
更改后的密码:fangitlab
或者选择登录其默认
用户名:root
默认密码:5iveL!fe
后续使用教程见:GitLab 中文文档,并关注以下两个文档。
GitLab Community Edition documentation
Omnibus GitLab documentation
Gitlab的使用
GitLab basics
GitLab使用介绍
GitLab基础使用教程
添加远程仓库
git仓库之间的代码传输协议主要使用ssh协议。ssh与git是两个不同的程序,不同的用途。
SSH Key导入:(生成秘钥所使用的邮箱是否需要和本地git设置的邮箱相同?)
(本地git中的用户名和邮箱会随同提交日志被公开到GitHub上,而非生成ssh key时使用的邮箱)
Working with non-default SSH key pair paths,见SSH系列文章
安装GitLab后的操作步骤(已配置好了ssh服务):
- 在GitLab上新建项目(新建时可以选择从GitHub中导入)
- SSH Key生成与导入(见SSH系列文章)
- 上传本地git库到GitLab
- 或Clone GitLab库到本地
主要参考:Gitlab的使用
SSH为非标准port时的解决办法: git remote add with other SSH port
ssh使用标准的port时:
$ git remote add origin git@localhost:TestGroup/Test.git
ssh使用非标的2200端口时的方法:
使用http;输入该仓库用户的GitLab的用户名和密码
$ git remote add origin http://127.0.0.1:8081/TestGroup/Test.git
################## 实际操作 ################
# 原因是使用git协议有问题,而使用http则可以(那么ssh key还有用吗?)
[fan 01:05:30]~/backup$ git remote add origin http://127.0.0.1:8081/TestGroup/Test.git
[fan 01:08:25]~/backup$ git push -u origin master
Username for 'http://127.0.0.1:8081': Fan
Password for 'http://Fan@127.0.0.1:8081':
对象计数中: 131, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (129/129), 完成.
写入对象中: 100% (131/131), 1.26 MiB | 0 bytes/s, 完成.
Total 131 (delta 15), reused 0 (delta 0)
remote: Resolving deltas: 100% (15/15), done.
To http://127.0.0.1:8081/TestGroup/Test.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
临时记录:
/var/opt/gitlab/git-data/repositories
git_data_dirs({"default" => "/var/opt/gitlab/git-data"})
/var/opt/gitlab/git-data/repositories/TestGroup/Test.git
git remote add origin ssh://root@127.0.0.1:2200 /var/opt/gitlab/git-data/repositories/TestGroup/Test.git
GitBucket
这个项目是日本的同行使用scala开发的一个github克隆。所以,抛开编程方面,对于java系的程序员还是比较友好的,部署也只需要把war包往tomcat之类的容器里一扔就ok。