笔记:svn 项目迁移到 gitlab

搭建GitLab

1. 安装gitlab (gitlab-ce 社区版,免费; gitlab-ee 企业版,收费),这里安装社区版。

步骤如下:

$ apt install curl openssh-server ca-certificates postfix 
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
$ sudo apt install gitlab-ce

安装完成后,会打印以下内容:

    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure

2. 修改gitlab配置文件:

# external_url是主机/防火墙/或访问gitlab的代理地址
external_url 'https://yun.rangotec.com:8001'

# 如果你有使用外部的程序,并修改服务端口号的需求,可以参考下面我的配置
# 使用外部的nginx
nginx['enable'] = false
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "localhost:8002"

# 使用外部的数据库
postgresql['enable'] = false
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_host'] = '127.0.0.1'
gitlab_rails['db_port'] = '5432'
gitlab_rails['db_database'] = 'gitlab'
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'wsad#123'

# 使用外部redis
redis['enable'] = false
gitlab_rails['redis_host'] = "localhost"
gitlab_rails['redis_port'] = 6379

# 更改端口
puma['port'] = 8003
prometheus['listen_address'] = 'localhost:8004'
gitlab_rails['gitlab_shell_ssh_port'] = 2223


###############所有端口占用################
# 80,8080,6379,9090 分别为前端nginx、 puma、缓存redis、prometheus

3. 重新配置,启动

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl start


$ sudo gitlab-ctl restart # 重启

# 使用以下用户名密码登录
# 默认用户名:root    
# 默认秘密所在位置: /etc/gitlab/initial_root_password (24小时后自动删除)
# 当默认密码无法登陆时,可以用下面的命令重置
$ gitlab-rake "gitlab:password:reset[root]"
4. 日志查看,日志位置: /var/log/gitlab/
$ sudo gitlab-ctl tail # 查看日志, 比如启动失败、端口占用等 

有多个项目的话, 重复3、4步骤即可。

Nginx配置(内网穿透时可参考):

location / {
        proxy_redirect http:// https://;
        proxy_set_header X-Forwarded-Ssl on; # 开启,否则会出现登录422 的问题!
        proxy_pass http://127.0.0.1:8002;
        proxy_set_header Host $host:8001; # 由于内网穿透改变了端口,所以这里进行了端口固定。 如果一致则可以使用$host:$port 
        proxy_set_header X-Real-IP $proxy_protocol_addr;
        proxy_set_header X-Forwarded-For $proxy_protocol_addr;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

}

 


迁移svn项目到git上。

自己的项目结构比较简单,没有分支信息。

1. 首先需要安装 git-core git-svn 两个程序。

$ sudo apt install git-core git-svn

2. 创建用户映射文件

对应关系为:

svn上的用户 = gitlab用户名<gitlab上用户的邮箱>
$cat user.txt
dk = lsw<lsw@rangotec.com>

3. 把项目从svn上clone下来

$ git svn clone --username dk --no-metadata --authors-file=user.txt   svn://yun.rangotec.com/trunk/AndroidReuseModules AndroidReuseModules

4. 上传项目到gitlab上

$ cd AndroidReuseModules
$ git remote add origin https://用户名:密码@yun.rangotec.com:8001/lsw/AndroidReuseModules.git
$ git push origin --all # 推送代码

验证:

登录gitlab 查看, 数据及版本记录已经同步过来了。

遇到问题:

1.  error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413

和gitlab没关系,这是因为 使用的https上传,nginx有文件大小限制。

修改 nginx 的 client_max_body_size 50m; 限制大小即可。

参加 :https://stackoverflow.com/questions/7489813/github-push-error-rpc-failed-result-22-http-code-413

2. remote origin already exists. 删除下就好了。

$ git remote rm origin
评论列表: