SVN 迁移到 GitLab

June 17, 2017

由于公司搬迁到原因,一直以来都和其他部门公用SVN,权限分配也是分管部门配置的,SVN上很多项目文件,各种branches,tags命名不规范化,产品运营也都混合使用,介于此情况下,考虑将我们有价值以及正在研发都项目都迁移到我们自己到Git服务上,综合考虑决定搭建一个GitLab。

部署GitLab

部署本身很简单,官方有简单到安装命令步骤

yum install curl policycoreutils openssh-server openssh-clients
yum install postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce
yum install lokkit
lokkit -s http -s ssh

安装完先打开 /etc/gitlab/gitlab.rb 修改几个简单到配置,域名/备份路径/仓库路径(保证有充足到磁盘空间)

external_url 'http://gitlab.mydomain.com'
gitlab_rails['backup_path'] = "/home/git/backups"
git_data_dirs({"default" => { "path" => "/home/git" }})

初始化配置

gitlab-ctl reconfigure

重启GitLab服务

gitlab-ctl restart

设置Crontab备份操作

  0  2  *  *  * /usr/bin/gitlab-rake gitlab:backup:create

之后访问平台WEB操作,重置管理员密码,创建用户,组,项目信息

一切就绪,我们需要开始导入原来SVN上需要到项目,这里需要操作时支持git svn命令

迁移

建立users.txt(存储svn账号与gitlab上账号的关联性)

格式: svn用户名 = git用户名,如:

yonghe = yonghe<×××@163.com>  
lihe = lihe<×××@163.com>  

注意: svn里面有的账号必须要做关联,否则clone会失败。比如上面的user11找不到是哪个开发人员,也不知道它该对应哪个git账号,那就随便指定一个git账号就行了,这样做的目的其实就是将user11在svn里面的所有提交日志关联到yqdong的git账号下。转到git之后,原svn账号就无关紧要,各司其职了。

绑定 users.txt 的意义仅在于,将svn里面的提交者日志,注意是提交者,不是svn里面所有的用户信息都得关联,仅仅是往项目提交过代码的svn账号,将这些svn账号找出来,然后关联到现有的git账号,一旦转到git上之后,每个git用户就能看到自己过去在svn里面提交的日志,绕了这么大一圈,现在明白了吧?

可以通过以下命令快速创建 users.txt

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > users.txt

导出svn上到项目数据

git svn clone https://svn.mydomain/amz/selenium-center/ --trunk="trunk" --tags="tags" --branches="branches" --authors-file=amz-selenium-center/users.txt --no-metadata selenium-center

添加GitLab到Git源信息

git remote add origin [email protected]:amz/selenium-server.git

将trunk, branches等上传

git push origin master

回到GitLab平台既可看到项目相关Commit信息

更多参考文档:实际操作 Svn 迁移到 Git

Redis原子性事务Lua应用

Redis 平时用的挺多,大多是情况用于队列消费和缓存,很少用上事务,最近因为队列高并发消费问题,处理完成后整理出相关的信息;### 背景大量业务需要从 Redis List Pop 出任务进行处理,部分任务处理可能出现因为第三方接口频率限制或者异常等情况,需要进行重试。那...… Continue reading

Ngrok私有自定义域名部署

Published on February 24, 2020

在敏捷回顾会议中引导使用ORID

Published on July 28, 2017