博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迁移Gitolite仓库到GitLab(一)
阅读量:6953 次
发布时间:2019-06-27

本文共 2315 字,大约阅读时间需要 7 分钟。

hot3.png

GitoliteGitlab仓库同步

调研目的

同步或者迁移gitolitegitlab之间的仓库,便于维护多个服务器上的多个代码管理环境。

Gitlabapi

134125_Lu7V_2496664.png

图一

GitLab的官方文档可以看出,目前没有迁移gitolite项目到GitLabapi。查看其它资料,或者github上的相关脚本,基本上分为基本的三个步骤,将gitolite上的仓库下载到本地,在GitLab上创建对应的仓库,将仓库映射到GitLab的项目仓库上。

Gitolite仓库迁移gitlab

方法一(服务器批处理)

第一步,gitolite复制到gitlab仓库目录下

# cp -r $Gitolite/repositories/* $GitLab/git-data/repositories/

执行导入处理程序

# gitlab-rake gitlab:import:repos

上面程序会处理一下目录结构,例如

进入gitlab web界面,创建仓库与导入的仓库同名,这样就完成了导入工作。

转换最好在git用户下面操作,否则你需要运行

# chown git:git -R /var/opt/gitlab/git-data/repositories

方法二(本地处理)

第一步

获得gitolite仓库的列表

ssh git@your.gitolite.com info | awk '/^[ @]*R/{print $NF}'

第二步

134557_DV4M_2496664.png

图二 GitLab CIAPI

根据上面的仓库列表,使用API或者command-line来创建GitLab仓库

初始化远程仓库的脚本git-init-remote

#!/bin/sh repo=$1token=put_your_api_token_here test -z $repo && echo "Repo name required." 1>&2 && exit 1 curl -H "Content-Type:application/json" https://gitlab.com/api/v3/projects?private_token=$token -d "{ \"name\": \"$repo\" }"

第三步

下载Gitolite项目到本地仓库

#!/bin/shif [ “$#” -ne 5 ]; then echo “Usage: $0 GITOLITE GITLAB_URL API_TOKEN GITLAB_USER REPONAME” >&2 echo “For example: $0 git@your.gitolite.com your.gitlab.com yoursecrettoken a-cool-repo” exit 1 fiGITOLITE=$1 GITLAB_URL=$2 API_TOKEN=$3 GITLAB_USER=$4 REPO_NAME=$5git clone –mirror $GITOLITE:$REPO_NAME.git  ./gitlab-init-remote $GITLAB_URL $API_TOKEN $REPO_NAME cd $REPO_NAME.git

第四步

同步本地仓库到GitLab服务器上

git remote add gitlab git@$GITLAB_URL:$GITLAB_USER/$REPO_NAME.git git push -f –tags gitlab refs/heads/:refs/heads/

有待验证

1)采用以上的方法,从Gitolite同步到Gitlab仓库,对应仓库的权限是否有变化。

Gitlab仓库迁移gitolite

可行性

gitolite管理项目仓库有两个重要的部分;

1) key key是用来控制访问者的身份认证;

2) gitolite.conf 该部分为访问控制权限

就目前来讲没有可以直接使用的api可以迁移Gitlabgitolite上迁移。如果非要迁移的话并且是小批量的,可以手动将对应项目的key和访问控制权限拷贝到gitolite服务器上。否则,需要迁移大批量的项目代码的话,需要付出比较大的人工代价。

caveats:没有必要,早期gitlab使用gitolite为用户提供ssh服务,自从gitlab5.0以后开始采用了解决方案gitlab-shell,安装新版本的gitlab必定会让gitolite上的数据往gitlab上迁移。所以从gitlabgitolite上迁移数据这个行为,如果没有很高的需求的话,没有必要做这样的数据同步。

总结

从技术潮流发展的趋势来讲,gitoliteGitlab上进行数据同步是好多公司都会进行的事情,gitolite作为小团队进行代码集中管理还是小而美的,但作为中型或者大型企业级的代码管理控制工具,GitLab从易用性和科学性的角度都能很好的满足其需求,而gitolite这样的代码托管工具恰恰缺少企业用户最关心的需求。那也就说明再将gitlab上已有的代码同步到gitolite上以及是一种逆技术潮流的行为,一般这样做,是很不明智的。在完成这次同步以后,我建议以后托管代码尽量托管到GItlab上,同种工具,这样便于以后做数据同步。

参考文献

http://binaryadventures.com/blog/migrating-from-gitolite-to-gitlab/

转载于:https://my.oschina.net/u/2496664/blog/630948

你可能感兴趣的文章
mysql中某张表修改较大时的处理
查看>>
如何退出telnet界面
查看>>
nginx+多个tomcat配置
查看>>
sublime实用插件-持续更新
查看>>
DotImage使用教程:从数据库中读写图像
查看>>
行业虚拟化发展趋势——“瑞友杯”虚拟化征文
查看>>
XY问题在开发中的体现
查看>>
更换或加装网卡的eth编号顺序配置
查看>>
Executors下面的线程池实现
查看>>
锐捷CCNA系列(五) 交换机配置模式切换
查看>>
squid命中率监控软件安装
查看>>
备份 Outlook 2010 中接收到的邮件和联系人
查看>>
用open***组建lan to lan ***
查看>>
我的友情链接
查看>>
Invalid source HTML for this operation , Error In IE
查看>>
Linux服务器间建立双向信任-无密码相互访问
查看>>
【COCOS2D-HTML5 开发之二】cocos2d-html5项目定义成员,局部变量,函数笔记随笔
查看>>
rsync与inotify
查看>>
将博客搬至CSDN
查看>>
使用docker镜像玩转steam挂卡
查看>>