リポジトリをBitbucketからGithubへ引越しました。
リポジトリの移動は割とすんなり済みましたが、困ったのは「課題」。登録件数が数百件、これはどうしたものか?手作業でコピペは現実的ではない。調べてみると、同じような事で困っている人はいるようで、ツールが公開されています。
Bitbucket Issues Migration
https://github.com/jeffwidman/bitbucket-issue-migration
残念ながら画像は対象外(課題/issueに貼り付けられている画像データは移行されない)
移行処理
基本的にリンク先の情報を元にスクリプトを実行する事になるんだけど、パスワード関係で引っかかった点をメモ。
Bitbucket、Githubともに通常のパスワードではなくアプリパスワード、パーソナルアクセストークンを利用する。
Bitbucketの準備
アプリパスワードの準備
スクリプトからBitbucketの課題にアクセスするためのアプリパスワードを追加する
Bitbucketのアカウントのページで「アプリ パスワード」を選択し、作成をクリックする。

Labelへ説明を入力して、課題への「読み取り」を選択して、「作成」をクリックする。

アプリパスワードが表示されるので、これをスクリプト実行時にbitbucketのパスワードして入力する。(ここでしか表示されないので、コピペでメモ帳などへ保存しておく)

Githubの準備
パーソナルアクセストークン(PAT)
移行に使用するパーソナルアクセストークン(PAT)を準備する。
- GitHubの Personal access tokens ページにアクセス
- 「Generate new token」の右側にあるプルダウンメニューをクリックし、「Generate new token (classic)」を選択します。

- 「
Note」
にトークンの名前を入力。 - 「
Expiration」
を設定する。 - 「
Select scopes
」 の一覧からrepo
のチェックボックスにチェックを入れる。これにで、リポジトリ関連のすべての権限が付与されます。

- ページ最下部の 「Generate token」 ボタンをクリックする。

- 表示されたトークンをコピーし、スクリプト実行時にGithubのパスワードとして使用する。

パスワードの入力
以下は、スクリプトの実行時にパーソナルアクセストークンを入力した例。(この例はBitbucketのアプリパスワードは予めKeyringに登録済みなの聞いてこない)
(py3) C:\repos\bitbucket-issue-migration>python migrate.py --bb-user BB_USER BB_USER/PROJECT GH_USER/PROJECT GH_USER --map-user users_mapping_file.txt
Please enter your GitHub password.
Note: If your GitHub account has authentication enabled, you must use a personal access token from https://github.com/settings/tokens in place of a password for this script.
←ここでgithubのパーソナルアクセストークンを入力(画面には何も表示されない)すると、処理がはじまる。
getting issues from bitbucket
Retrieving issues in batches of 20, total number of issues 23, receiving 1 to 20
Imported Issue: https://api.github.com/repos/GH_USER/PROJECT/issues/1
Completed 1 issues
Imported Issue: https://api.github.com/repos/GH_USER/PROJECT/issues/2
Completed 2 issues
注:上記の大文字の部分は以下の通り
- BB_USER:BitbucketのユーザーID
- PROJECT:リポジトリの名前
- GH_USER:GithubのユーザーID