backlogの社内gitのリポジトリを他社backlogリポジトリに移行した

投稿日:

なんかめんどかったので今後の為にメモ。

なお、今回の移行では、管理対象ファイルの他、全てのブランチも移行した。
ただ、コミット履歴については一部しか移行できてないように見えた。git周りの仕様なのだろうか?

前提

作業手順と気になったこと

一般的な手順についてはWeb上で先行者の方々が情報公開されてるので、ここでは自身の作業で気になったところをメモる。

大きな流れとしては次の通り。

  1. Git環境の用意
  2. 移行元・移行先でのbacklogの個人設定からのSSL公開鍵登録
  3. gitコマンドで移行元からリポジトリを取得
  4. ローカルに取得した移行元リポジトリをgitコマンドで移行先に反映

Git環境の用意

ググったところ、次の環境がよく使われているようだったのでインストールした。

Git for Windows

専用のCUIツール/GUIツールが含まれている。

移行元・移行先でのbacklogの個人設定からのSSL公開鍵登録

移行元・移行先のリポジトリに、ローカルのgit環境からアクセスする為に登録する必要があるが、鍵をどうやって用意するか、鍵をローカルのどこにおくべきかで少々手間取った。

鍵の用意については、puttygenとかwindowsで鍵を作成できるツールがあるので、それで作れる(ただ、自分の場合は既に鍵はあったので作成は飛ばした)。

このようにして用意した鍵の公開鍵の方をbacklogの個人設定に登録する。

また、鍵をローカルのどこに置くべきかは、次のパスに置いたものをGit環境が認識してくれた。

C:\Users\[ユーザーの毎のディレクトリ]\.ssh

前述のGit環境のGUIツールとして「Git Gui」があるが、これを起動してメニュー「メニュー>Show SSH Key」を選択すると、上述ディレクトリに設置された公開鍵を確認できた。

gitコマンドで移行元からリポジトリを取得

まず、移行元backlogの管理画面よりGitのリポジトリ一覧画面を開き、対象リポジトリの「SSH」の方のURLを取得する。

次にGit環境で「GitBash」(=CUIのツール)を起動し、次のコマンドを実行する。

git clone --mirror [移行元backlogのURL(SSH)] [ローカルでのリポジトリ名]

ローカルに取得した移行元リポジトリをgitコマンドで移行先に反映

まず、移行先backlogの管理画面よりGitのリポジトリ一覧画面を開き、対象リポジトリの「SSH」の方のURLを取得する。

次に、GitBashで次のコマンドを実行。

cd [ローカルのリポジトリ名]
git push --mirror [移行先リポジトリのURL(SSH)]

移行対象のリポジトリに含まれるブランチの数などデータ容量が多いと、pushを実行してから処理終了して制御が戻ってくるまでに時間がそれなりにかかるので、フリーズしたのかとあせらず待つことが大事(^^;

自身が実施した際は、ブランチの数が109あり管理対象のファイルも17000程度あったが、体感で20分程度かかった覚えがある。

追記:デフォルトブランチの設定

上記方法だと、移行先リポジトリでデフォルトブランチが変わる場合がある。

この際の対応として、移行先backlogの管理画面からデフォルトブランチの変更ができる。

具体的な手順としては次の通り。

  1. プロジェクト設定画面から「Git」を押下。→「Gitの設定」画面に遷移。
  2. リポジトリ一覧の対象リポジトリ枠の「編集」ボタン押す。→設定の編集画面に遷移。
  3. 項目「デフォルトブランチ」でデフォルトブランチにしたいブランチを選択し、「リポジトリを更新する」ボタンを押下。→設定が反映される。

参考

WindowsでSSHの鍵を作る - Qiita

Gitインストール手順<Windows向け> - IT入門書籍 スッキリシリーズ (sukkiri.jp)

【Git】Backlog間でのリポジトリ移管方法 | アプリ開発・制作/システム開発のYAZ

関連するタグ

関連するタグは現在ありません。