迁移Gitolite仓库到GitLab(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

GitoliteGitlab仓库同步

调研目的

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

Gitlabapi

迁移Gitolite仓库到GitLab(一)_第1张图片

图一

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 [email protected] info | awk '/^[ @]*R/{print $NF}'

第二步

迁移Gitolite仓库到GitLab(一)_第2张图片

图二 GitLab CIAPI

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

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

#!/bin/sh
 
repo=$1
token=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/sh
if [ “$#” -ne 5 ]; 
then echo “Usage: $0 GITOLITE GITLAB_URL API_TOKEN GITLAB_USER REPONAME” >&2 
echo “For example: $0 [email protected] your.gitlab.com yoursecrettoken a-cool-repo” 
exit 1 
fi
GITOLITE=$1 GITLAB_URL=$2 API_TOKEN=$3 GITLAB_USER=$4 REPO_NAME=$5
git 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://doc.gitlab.com/ce/api/

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


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

你可能感兴趣的:(迁移Gitolite仓库到GitLab(一))