GitLab CEからGitLab.comに移行

gitlab_move_serverGitLabをレンタルしたVPSにインストールして運用していたけど、yum updateしようとしたら下記エラーになるので「もうGitLab.comでいいんじゃね?無料だし」と思って移行したときの覚書。

gitlab-ce-8.7.4-ce.0.el6.x86_64.rpm  | 250 MB     02:13
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
エラー: Couldn't fork %pre(gitlab-ce-8.7.4-ce.0.el6.x86_64): メモリを確保できません
Error in PREIN scriptlet in rpm package gitlab-ce-8.7.4-ce.0.el6.x86_64
エラー:   install: スクリプト %pre の実行に失敗しました (2)。gitlab-ce-8.7.4-ce.0.el6 をスキップします。
gitlab-ce-8.7.3-ce.0.el6.x86_64 was supposed to be removed but is not!

 

GitLab.comはプライベートレポジトリが無制限に無料でサポートが有料。

GitHubの新しい有料プランがプライベートレポジトリをたくさん作れるようになったけどGitLab.comはそもそも全部無料だし。

という記事が公式ブログにある。分かりやすい比較表付き。

 

目次

  1. GitLab.comにアカウント新規作成してSSH Keyを登録
  2. Git cloneして試す
  3. 鍵ファイルを分かりやすい名前に変更
  4. 各リポジトリを個別に移行
  5. GitLab CEをアンインストール

 


1.GitLab.comにアカウント新規作成してSSH Keyを登録

新規アカウントを登録して、SSH Key(公開鍵と秘密鍵)を作成。公式サイトを参考に
# ssh-keygen -t rsa -C hoge@gmail.com

パスフレーズはなしで。

公開鍵を表示して、Profile Settings → SSH Keysに登録
# less ~/.ssh/id_rsa.pub

 


2.Git cloneして試す

適当なプロジェクトをGitLab上で作成。

gitのグローバルアカウント設定を変更
# git config --global user.name "hoge"
# git config --global user.email hoge@gmail.com

git cloneしてみる
# git clone git@gitlab.com:hoge/test.git

無事cloneできるのを確認

 


3.鍵ファイルを分かりやすい名前に変更

GitHubのアカウントもあるので秘密鍵と公開鍵の名前を分かりやすいように変更
# cd .ssh
# mv id_rsa id_rsa.gitlab.com
# mv mv id_rsa.pub id_rsa.pub.gitlab.com

設定編集
# less config

Host gitlab.com
        RSAAuthentication yes
        IdentityFile ~/.ssh/id_rsa.gitlab.com
        User git

sshコマンドで確認。どの鍵ファイルを使っているか分かる。
# ssh -vT git@gitlab.com

 


4.各リポジトリを個別に移行

< 2016/05/20 追記>
移行後に気付いた。GitLabにあるbareリポジトリからpushすれば、もっと簡単だった。

GitLab.com上でプロジェクトを作成後、自サーバーのGitLabのbareリポジトリに移動してプッシュ。
# cd /var/opt/gitlab/git-data/repositories/hoge/project.git/
# git push --mirror git@gitlab.com:hoge/project.git

なので前の方法は非推奨。

GitLabベアリポジトリから足りないブランチをGitLab.comへプッシュする場合
# git remote add origin git@gitlab.com:hoge/project.git
# git fetch origin
# git push origin --all

GitLab.comで更新済みのブランチはエラーになるけど、足りなかったブランチは反映された。

タグも反映する場合
# git push origin --tags


一括でGitLab CEからGitLab.comにエクスポート・インポートする機能はないようなので個別に登録。

GitLab.com上でプロジェクトを作成

移行するリポジトリに移動。originを変更する。一応fetchしてから
# git fetch origin
# git remote set-url origin git@gitlab.com:daiki.suganuma/hoge.git

確認
# git remote -v

push
# git push origin --all
# git push origin --tags

ローカルにリポジトリがない場合はmirrorを使った方法が簡単みたい

小さいプロジェクトは作業用のディレクトリ作ってこの方法使った方が早い。
# git clone --mirror git@gitlab.hoge.jp:hoge/project.git
# cd project.git
# git push --mirror git@gitlab.com:hoge/project.git

 


5.GitLab CEをアンインストール

GitLab CEを停止してまましばらく運用してみて問題がなさそうなのでアンインストールする。

参考

YUMレポジトリから削除
# rm -f /etc/yum.repos.d/gitlab_gitlab-ce.repo

GitLab停止
# gitlab-ctl stop

アンインストール
# yum remove gitlab-ce

設定ファイル削除
# rm -rf /etc/gitlab/
# rm -rf /opt/gitlab/

ユーザー一覧
# less /etc/passwd

ユーザー削除
# userdel gitlab-www
# userdel git
# userdel gitlab-psql
# userdel gitlab-redis

データとログを削除する場合。
# rm -rf /var/opt/gitlab/
# rm -rf /var/log/gitlab/

 

 

< Related Posts >