使用gitlab-mirrors同步github和本地gitlab上的代码

概述

我本地搭建了gitlab,为的就是可以保存一些开源的项目到本地,为了保持项目是最新的,所以要和远程的仓库做同步,所以就要使用gitmirror了,网上大部分使用gitlab-mirrors都是使用ssh方式去拉取代码的,但是因为某些原因我只能使用http的方式去拉取代码所以我的教程中是没有任何关于ssh的步骤的,所以不要惊讶

操作

系统初始化设置

首先安装pip

yum install python-pip

之后使用pip安装下面模块

pip install python-gitlab

之后你要在你的系统中创建一个gitmirror用户

adduser gitmirror

切换到这个用户

su - gitmirror

之后登陆gitlab创建gitmirror用户并且赋予Administrators权限

并且创建gitmirror-group组

之后拉取代码

su - gitmirror

mkdir repositories

touch private_token

git clone https://github.com/samrocketman/gitlab-mirrors.git

cd gitlab-mirrors

chmod 755 *.sh

cp config.sh.SAMPLE config.sh

修改配置

vim config.sh

#Environment file

gitlab-mirrors settings

#The user git-mirrors will run as.

system_user="gitmirror"

#The home directory path of the $system_user

user_home="/home/${system_user}"

#The repository directory where gitlab-mirrors will contain copies of mirrored

#repositories before pushing them to gitlab.

repo_dir="${user_home}/repositories"

#colorize output of add_mirror.sh, update_mirror.sh, and git-mirrors.sh

#commands.

enable_colors=true

#These are additional options which should be passed to git-svn. On the command

#line type "git help svn"

git_svn_additional_options="-s"

#Force gitlab-mirrors to not create the gitlab remote so a remote URL must be

#provided. (superceded by no_remote_set)

no_create_set=false

#Force gitlab-mirrors to only allow local remotes only.

no_remote_set=false

#Enable force fetching and pushing. Will overwrite references if upstream

#forced pushed. Applies to git projects only.

bash-4.2$ cat config.sh

#Environment file

gitlab-mirrors settings

#The user git-mirrors will run as.

system_user="gitmirror"

#The home directory path of the $system_user

user_home="/home/${system_user}"

#The repository directory where gitlab-mirrors will contain copies of mirrored

#repositories before pushing them to gitlab.

repo_dir="${user_home}/repositories"

#colorize output of add_mirror.sh, update_mirror.sh, and git-mirrors.sh

#commands.

enable_colors=true

#These are additional options which should be passed to git-svn. On the command

#line type "git help svn"

git_svn_additional_options="-s"

#Force gitlab-mirrors to not create the gitlab remote so a remote URL must be

#provided. (superceded by no_remote_set)

no_create_set=false

#Force gitlab-mirrors to only allow local remotes only.

no_remote_set=false

#Enable force fetching and pushing. Will overwrite references if upstream

#forced pushed. Applies to git projects only.

force_update=false

#This option is for pruning mirrors. If a branch is deleted upstream then that

#change will propagate into your GitLab mirror. Aplies to git projects only.

prune_mirrors=false

Gitlab settings

#This is the Gitlab group where all project mirrors will be grouped.

gitlab_namespace="gitmirror-group"

#This is the base web url of your Gitlab server.

gitlab_url="http://gitlab.bboysoul.com:88"

#Special user you created in Gitlab whose only purpose is to update mirror sites

#and admin the $gitlab_namespace group.

gitlab_user="gitmirror"

#Generate a token for your $gitlab_user and set it here.

gitlab_user_token_secret="$(head -n1 "${user_home}/private_token" 2> /dev/null || echo "")"

#Sets the Gitlab API version, either 3 or 4

gitlab_api_version=4

#Verify signed SSL certificates?

ssl_verify=true

#Push to GitLab over http? Otherwise will push projects via SSH.

http_remote=true

Gitlab new project default settings. If a project needs to be created by

gitlab-mirrors then it will assign the following values as defaults.

#values must be true or false

issues_enabled=false

wall_enabled=false

wiki_enabled=false

snippets_enabled=false

merge_requests_enabled=false

public=false

注意上面有个参数就是http_remote=true这个就是使用http去推送代码的关键了。

完成之后在private_token这个文件里加入gitmirror用户的Personal Access Tokens在你登陆gitmirror这个用户之后,点击用户头像,点击设置,点击Access Tokens创建就可以了

之后可以使用下面的命令去创建一个项目

./add_mirror.sh --git --project-name gitlab-mirrors --mirror https://github.com/samrocketman/gitlab-mirrors.git

因为是http的方式所以会让你输入你的gitmirror这个账号的账号和密码,创建完成之后就会在gitmirror-group这个组看到这个项目的代码了

你可以使用下面的命令删除一个仓库

./delete_mirror.sh --delete r410-fancontroller

执行下面命令手动同步代码

./git-mirrors.sh

当然你可以设置计划任务来同步代码

* 12 * * * /home/gitmirror/gitlab-mirrors/git-mirrors.sh

列出当前所有的项目

/ls-mirrors.sh

欢迎关注Bboysoul的博客www.bboysoul.com

Have Fun

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏译文

8种基于文件的Linux备份解决方案

在开发不同的 Web 项目时,我积累了大量的工具和服务,以方便开发人员、系统管理员和运维的工作。 在这些项目即将开发完成之时,开发人员面临的头号难题之一,是对媒...

463100
来自专栏王二麻子IT技术交流园地

JSP技术介绍

1. 技术介绍 JSP即Java Server Page,中文全称是Java服务器语言。它是由Sun Microsystems公司倡导、许多公司参与建立的一种动...

35760
来自专栏技术/开源

开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到...

45760
来自专栏java闲聊

windows下实用工具推荐

在windwos下启动工具平常的操作是需要在桌面找到图标,然后点击打开,现在你可以去掉第一步操作了,实用Wox会让你爱不释手,只需一步即可打开你想要的软件,快捷...

10430
来自专栏实用工具入门教程

如何部署 Bacula Server

Bacula是一种开源网络备份解决方案,允许您创建备份并执行计算机系统的数据恢复。它非常灵活和强大,这使得它在配置时稍微麻烦,适合在许多情况下进行备份。备份系统...

51030
来自专栏用户2442861的专栏

linux GDB调试c++程序

  GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNI...

15520
来自专栏纯洁的微笑

springboot(一):入门篇

什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使...

32670
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第三十二天 WebLogic中间件【悟空教程】

中间件(middleware)是基础软件的一大类, 属于可复用软件的范畴. 顾名思义,中间件处于操作系统软件与用户的应用软件的中间.

38330
来自专栏散尽浮华

Linux下monit进程管理操作梳理

Monit对运维人员来说可谓神器,它是一款功能非常丰富的进程、文件、目录和设备的监测工具,用于Unix平台。它可以自动修复那些已经停止运作的程序,特使适合处理那...

1.6K110
来自专栏漏斗社区

工具| 诸神之眼nmap定制化之初识篇

Nmap是学习网络安全必备的一款工具,有着强大的信息收集能力,有本书甚至因此称它为“诸神之眼” 。Nmap不仅仅是一个端口扫描器那么简单,它还有着一个强大的脚本...

47180

扫码关注云+社区

领取腾讯云代金券