Codebergリポジトリをミラーする
Codebergはオープンソースの精神を重視したGitリポジトリのホスティングサービス(GitHubみたいなやつ)です。
その理念に惹かれて、以前からCodebergを意識的に使っています。普通にコードを書いてコミットするのはもちろん、Issueページだったり言語ごとの割合をカラフルに表示したり、かなりGitHubっぽい使い方ができて満足しています。
ただ一方で、Codebergで全部済むかと言われたら微妙です。Pages等の追加機能は無いし、何より他の開発者との歩調が合いません。もはや開発に欠かせない存在であるGitHub。完全に離れるというのは色々厳しいものがあります。
せめてGitHubにもリポジトリがあれば安心感があります。実は、Codebergで作成しているリポジトリのミラーをGitHubに展開することが可能です。その方法を以下に解説します。
GitHubにミラーする方法
ミラーリングの仕組みは空のリポジトリを作り、そこに自動で定期的にプッシュされるようにする感じです。ワンクリックで超簡単!とまではいきませんが、GitHubのリポジトリを作って紐付けるだけで、かなり簡単に設定できます。
Codeberg側の設定
Codebergのharuomaki/TILリポジトリがオリジナルであるとして、GitHubに同名の空のリポジトリharuomaki/TILを作成します。
次にCodebergリポジトリの設定画面を開きます。「ミラー設定」というそのまんまな項目があります。
-
「リモートGitリポジトリのURL」にGitHub側のリポジトリ(
git@やssh://から始まるURL) - 「SSH認証を使用する」にチェックを入れる
- 「コミットがプッシュされたときに同期」にチェックを入れる(推奨)
以上の3点を設定して、「プッシュミラーを追加」を押せばCodeberg側の設定は完了です。
3つ目のチェックは強く推奨です。これを入れないとオリジナルへのプッシュが即座にミラーに反映されず、純粋に定時的な同期となります。これを入れ忘れると後から変更できないようです…
なお、GitHubリポジトリに操作を加えるため認証が必要になるのですが、現状では2つの方法があるようです。
- GitHubリポジトリへのアクセストークン(Personal access tokens)
- SSHによる認証
前者はGitHubにトークンを生成してもらう方法です。後者はCodeberg上で鍵ペアが生成され、Codebergがクライアント / GitHubがホストとなるSSH接続が内部的に行われます。トークンはアクセス種別を細かく指定できる利点があるものの、実体験としては種別設定や管理が煩雑であると感じました。今回はSSH認証を行うことにします。
GitHub側の設定
「プッシュミラーを追加」を押下後、以下のようにエントリが追加されているはずです。
「公開鍵をコピー」をクリックして認証に用いる鍵を取得できます。
次にGitHub側のリポジトリの設定画面に移ります。GitHubをSSH接続で操作する場合、よくあるやり方としてはアカウント設定から公開鍵を登録するパターンが多いですが、実は特定のリポジトリのみに紐付く鍵登録も可能です。「Deploy keys」という機能です。
左側のリストから「Deploy keys」選択 → 「Add new」をクリックして…
- 「Title」を適当に入力
- 「Key」に先ほどコピーした公開鍵を貼り付け
- 「Allow write access」にチェックを入れる(重要!)
この3点を設定して「Add key」をクリックすれば設定完了です。
リポジトリを同期する
全ての設定が完了したら、Codeberg側の「今すぐ同期」ボタンを押してみましょう。
十数秒くらい待つと、GitHubリポジトリに内容が書き込まれます!
結論
Codebergのリポジトリ内容を定期的にプッシュすることで、GitHub上にミラーを作成することができます。
参考にしていただければ幸いです。




