Help us understand the problem. What is going on with this article?

GitHub.comとGitLab.comのリポジトリをミラーリングする

More than 3 years have passed since last update.

GitLab Advent Calendar 2016の十二日目です。

GitLab.comにはリポジトリを1時間毎に自動でミラーリングする機能があります。
そこで本日は、GitHub.comとGitLab.comのリポジトリをミラーリングする方法を紹介します。

概要

GitLab Enterprise Edition(以下EE)には、gitのリポジトリを1時間毎にミラーリングする機能があります。
ミラーリング方式としてgitのpushとpullをサポートしています。そのため、push方式ではGitLabから他のリポジトリにミラーリング、pull方式では他のリポジトリからGitLabのリポジトリにミラーリングすることが出来ます。
なお、ミラーリングにあたり以下を考慮する必要があります。

  • 対象のリポジトリはhttp://https://、またはgit://のいずれかでアクセス出来る必要があります。
  • 非公開リポジトリの場合は、以下のようにURLに認証情報を含める必要があります。
    • https://username:password@gitlab.company.com/group/project.git。ちなみに、2段階認証を有効にしている場合は、パスワードの代わりにパーソナルアクセストークンを使用してください。
  • リポジトリのインポートは15分でタイムアウトします。
  • Git LFS/Annextオブジェクトは自動的に同期されません。そのため、手動でpush/pullする必要があります。

無料で利用できるGitLab.comは、GitLab EEで動いています。そのため、GitHub.comのミラーリポジトリを無料でGitLab.comに作成することが出来ます。
また、GitLab.comの利用料金については八日目の私の記事、「GitHub.com・BitBucket.org・GitLab.comの月額料金比較 + α」に詳しく書いてあるので、そちらをご参照ください。

GitHub.com -> GitLab.comのミラーリング方法

それでは、GitHub.comのリポジトリをGitLab.comにミラーリングする手順を解説します。
まずは、普通にGitLabの新規プロジェクトの作成ページに進んで、"Project Name"を入力します。
そして、"Import project from"の"Repo by URL"を選択し、"Git repository URL"にGitHubのリポジトリのURLを入力し、"Mirror repository"にチェックを入れます。
repository_mirroring_new_project.png
あとは、適当に他の設定をして"Create project"をクリックしてください。

また、既存のプロジェクトにミラーリングの設定をする場合は、プロジェクト画面の右上にある歯車アイコンの中にある"Mirror Repository"から同様にして設定することが出来ます。

なお、GitHub.comのリポジトリをGitLab.comにミラーリングして運用する際は、GitLab.com側には直接コミットしないように注意してください。GitLab.com側に手動でコミットしたブランチは、データのロストを避けるために自動同期されなくなります。
つまり、GitHub.com側のリポジトリにだけpushし、GitLab.com側のリポジトリは非常時のpullのみに使用して下さい。

GitLab.com -> GitHub.comのミラーリング方法

続いて、GitLab.comのリポジトリをGitHub.comにミラーリングする手順を解説します。

もし、GitHub.comで2段階認証を有効にしている場合は、最初に"personal access token"を作成する必要があります。Tokenの作成は、画面右上の"Setting"にある"Developer settings"の"Personal access token"で出来ます。画面右上の"Generate new token"をクリックすると新規Tokenの作成画面が表示されるので、"Token description"に適当な説明を入力し、"Selecet scopes"の"repo"にチェックを入れて"Generate token"をクリックしてください。

続いて、ミラーリングするGitLabプロジェクト画面の右上にある歯車アイコンの中にある"Mirror Repository"からミラーリングの設定を行います。設定は
"Push to remote repository"の"remote mirror repository"にチェックを入れて、"Git repository URL"にGitHubのリポジトリのURLを入力し、"Save changes"をクリックすれば完了です。この"Git repository URL"には、リポジトリにpush権限のあるユーザーとパスワード(2段階認証時はトークン)の情報を含めてください。
repository_mirroring_push_settings.png
以降は1時間毎にGitLab.comのリポジトリからGitHub.comへのミラーリングが処理が実行されます。

なお、GitLab.comのリポジトリをGitHub.comにミラーリングして運用する際は、GitHub.com側には直接コミットしないように注意してください。GitHub.com側に手動でコミットしたブランチは、データのロストを避けるために自動同期されなくなります。
つまり、GitLab.com側のリポジトリにだけpushし、GitHub.com側のリポジトリは非常時のpullのみに使用して下さい。

まとめ

このように、GitHub.comとGitLab.comのリポジトリのミラーリングは簡単に設定することが出来ます。
万が一のバックアップとして、重要なリポジトリはGitHub.comとGitLab.comでミラーリングの設定をしておくと良いと思います。

hiroponz
GitLab 5.1と10.0のMVPに選ばれました。
http://hiroponz.hateblo.jp/
gitlab-jp
Git/DevOpsツールチェーンプラットフォーム「GitLab」についての日本コミュニティ。
https://gitlab-jp.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした