2021/12/22 平見知久
gitレポジトリのお引越し
手持ちの雑プロ等の野良gitレポジトリを整理したくて、gogsを導入してみました。レポジトリ管理であれば言わずとしれたGitHubやAWSのCode commitあたりが有名どころでしょう。が、人様にお見せできないような雑なコードをGitHubで晒すのもアレですし、gitlabあたりはさすがに大げさすぎます(メモリ4GBきっちり持ってくのはきついというか、別のサーバに割り当てたい)。そういう観点でいくとgogsはお手軽でサーバのメモリ的にも優しくていい感じです。
で、手持ちのレポジトリを放りこんでいくのですが、ブランチやタグをちまちま指定していくのはやりたくないところです。漏れも怖いですし一括でやって欲しい。
ということで軽く調べたらちゃんとありました。cloneのときに–mirrorオプションをつけて引っ張ってきます。
git clone --mirror git@XXproject.git
このときcloneしたものはbare形式になります。で、移動先にレポジトリを作っておいて、pushするときも–mirrorをつけます。
cd XXproject.git ; git push --mirror git@dst:project.git
git remote add originとかせずにそのままレポジトリを指定します。これで全部のブランチ・タグもまとめて新しいレポジトリに追加されます。
さすがgit、よくありそうなことはちゃんとあるところが素敵です。
ちなみにgogsの場合、これをGUIからやってくれる移行機能がありましたので今回はそっちで移行してしまいましたが、–mirrorつけるやり方多分どのサービスでも共通で行けると思いますのでメモ兼ねて記事にしておきます。