概述
gitlab已经非常强大了,不仅可以导入gitlab自身的代码库,还可以导入外部的代码库,如:GitHub、Gitea、Repository by URL等
那么,当有多个代码库的时候(比如:一个是主库,用于读写,另一个用于备份<虽然备份有多种形式>),如何做到在多个代码库之间同步代码呢?
其实gitlab已经提供了同步代码的功能,无须借助外部工具即可实现代码在多个库之间的同步~~~
准备工作
假设我们有两个gitlab的服务器:
一个名为master
url为:http://192.168.0.166
另一个名为slave
, url为:http://192.168.0.168
在master
服务器上,有一个名为iDemo
的代码库
现在的需求是,把 master
上的iDemo
的代码库,完整的同步到slave
服务器,当然有很多种方法,比如:克隆了iDemo之后,直接推送到slave
服务器上,导出工程的完整的数据再导入;
这次我们不采用上面的方法,而是采用gitlab自带的功能来达到同步代码的目的(可以随时同步)
iDemo代码库
master
服务器上的iDemo
的代码库如下:
这个代码库上,有一个demo.cc
文件,位于dev
分支上
让我们开始吧
在slave
服务器上创建一个名为iDemo
的空白的代码库
创建完成后如下:
在master服务器上做如下配置:
最后保存
打开iDemo
代码库:
展开Mirroring repositories
然后在Git repository URL
里填写slave
服务器上的iDemo
的URL,URL的格式如下:
http://用户名@192.168.0.168/ai/iDemo.git
一定要写上slave
服务器的拥有iDemo
库权限的用户名,否则同步会失败的
如下所示:
最后点击Mirror repository
保存,如下所示:
开始同步
点击右侧的那个同步图标,即可开始同步:
根据库的大小和网络的情况,过一会儿刷新一下些界面:
可以看到,同步成功了
在slave
服务器的iDemo
上检查一下:
可以看到,已经把dev/master分支同步过来了,包括所有的提交记录也完整的同步过来了
那么,可以实现定时同步吗?