BitbucketのMercurialのリポジトリをGitへ移行する


BitbcuketのMercurialのサポートが2020年に終了するようなので移行しないといけなくなった

参考:bitbucket.orgでmercuialのサポート終了のお知らせ

概要:2020/2/1に新規でリポジトリ作成ができなくなり、2020/6/1にMercurialのリポジトリが削除されるらしい。

それで引き続きBitbucketを使い続けたい場合

これを機にBitbucketからGitHubへ移りたいという場合は別の記事を参照ください。ここではBitbucket内でのリポジトリの変換をする場合の手順について書きます。

主な手順は下記リンクの通り

Gitとその他のシステムの連携-Git-へ移行する

変換の概要

上記の手順はUbuntu16.04上で実行することになっているので、その環境を準備する。
変換手順はリポジトリ名を同じにしたいので、Bitbucket上のMercurialのリポジトリの名前を変更する。(sampleというリポジトリ名の場合、sample-Hgのようにする)
そして、変換後のGitのリポジトリを予め作成しておく。

  1. sample-Hgリポジトリ(Mercurial)からクローン
  2. ローカルでGitに変換
  3. sampleリポジトリ(Git)へpushする。

という手順とする。

手順通りにやってもうまくいかない

まず、取得するようになっている、fast-exportがエラーを吐いて動かないので、一旦説明通りにcloneした後、下記コマンドで動くrevを取得

git checkout tags/v180317

次に手順通りだと、authorsファイルが作成され、Gitの記述方に沿った書き方でない場合、変換する必要がある。とあるがそのまま書いたのではエラーになるため、下記の書き方にする必要がある。

(誤) bob=bob Jones <[email protected]>
(正) "bob"="bob Jones <[email protected]>"

つまり、ダブルクォートで左右の文字列を囲むようにということのようだ。

上記の点を踏まえると、Bitbucket内でプロジェクトの変換ができた。