GitHub ImporterでRepositoryをImportした際に保持される情報を確認してみた

2020.06.01

こんにちは、CX事業本部の若槻です。

GitHubには他のVCS上のRepositoryをImportして複製を作成することができるGitHub Importerという機能があります。

If you have a project hosted on another version control system, you can automatically import it to GitHub using the GitHub Importer tool.

GitHub Importerを使えば、GitHubのブラウザコンソールからImport元のclone URLを指定するだけで、Repositoryの複製を簡単に作成することができます。

今回は、このGitHub ImporterでRepository(GitHub)がImportされる際にどのような情報が保持されるのか確認してみました。

確認してみる

以下の情報について、実際にImport操作を行ってImport元のRepository(GitHub)の情報がImport後の新しいRepositoryでも保持されるのか確認してみます。

情報 確認箇所(https://github.com/<OWNER>/<REPOSITORY>配下のURLパス)
commit /commits
branch /branches
pacakge /packages
release /releases
Issue /issues
Pull request /pulls
Actionsの実行履歴 /actions
Project /projects
Secret /settings/secrets

なお、今回はImport元のRepositoryとして、Import先と同じGitHubアカウント上のPrivate Repositorytestを対象としてみます。
image.png

Importの実施

RepositoryのImport先としたいGitHubアカウントにログインし、ページの右上の[+]をクリックして[Import repository] を選択します。

image.png

[Import your project to GitHub]ページが開きます。 image.png

[Your old repository's clone URL]で、ImportするRepositoryのclone URLを指定します。(今回はtestRepositoryを指定しました。)

[Your new repository details]で、[Owner]ではImport先のGitHubアカウント、[Name]では新しいRepositoryの名前を指定します。(今回はtest2という名前を指定しました。)

[Privacy]で、新しいRepositoryが「Public」か「Private」かを選択します。

[Begin import]をクリックしてImportを開始します。 image.png

以下のページが開き、Importが開始されます。 image.png

Private RepositoryからImportする場合は、開始後に少し経つと以下のように表示されて認証を要求されるので、GitHubアカウントのログイン情報を入力して[Submit]を入力します。

Your old project requires credential for read-only access We will only temporarily store them for importing.

image.png

この時、GitHubアカウントで2要素認証が設定されている場合は認証が通らない(繰り返し要求される)動作となるため、その場合は[Personal access tokens]ページでアクセストークンを作成し、[Password]に指定する必要があるとのことです。

私のGitHubアカウントでも2要素認証が設定されていましたが、同様の対処で認証させることができました。(利用したアクセストークンには念のため全ての権限スコープを付与しました。) image.png

しばらく待って、Importing complete!と表示されたらImportは完了です。(Import画面を閉じても完了時にメール通知が来ます。) image.png

新しいRepositoryとしてtest2が作成されました。 image.png

確認結果

Importにより新規作成されたRepositorytest2を確認したところ、Import元の情報のうち「commit」「branch」「Actionsの実行履歴」の情報が保持される結果となりました。

情報 保持の有無 確認箇所(https://github.com/<OWNER>/<REPOSITORY>配下のURLパス)
commit /commits
branch /branches
pacakge /packages
release /releases
Issue /issues
Pull request /pulls
Actionsの実行履歴 /actions
Project /projects
Secret /settings/secrets

Import元とできるSVCはGitHubに限定されないため、保持される情報はcommitとbranchくらいかなぁと考えていたので、Actionsの実行履歴が保持されたのは意外でした。

補足

今回はGitHubにおけるRepositoryの「Import」について確認しましたが、既存Repositoryを元にして新規Repositoryを作成する方法には他にも「Clone」「Fork」「template」「Transfer」などいくつかあります。

ここでは各方法の詳細には触れませんが、それぞれで出来ることは異なるので目的に応じて使い分けたいですね。

おわりに

今回はGitHub ImporterでRepositoryをImportした際にどんな情報が保持されるのかを確認してみました。

今までRepositoryの複製を作成するときはgit cloneコマンドを利用していましたが、この機能を使えばもっと簡単に複製が行えそうです。

参考

以上