Migrando issues do Github para o Bitbucket

Há uns meses atrás eu tentei criar um repositório privado para um microservice do Chá Online e vi que não era mais possível porque já estava no limite. A maioria destes eram freelas ou projetos que se tornariam públicos mas nunca terminei, então eles estavam inativos. Em alguns, o último commit foi há uns 3 anos :(

Migrar o código é extremamente fácil, o Bitbucket tem um botão especialmente pra isso, mas o problema são as issues. Quem é que quer perder aqueles comentários preciosos com gif animados?

Então, eu acabei de fazer isso e achei que seria útil ter isso exemplificado aqui. Pesquisando no Google dá pra achar alguns tutoriais, mas a maioria são antigos e não funcionam mais porque as APIs do Github e Bitbucket mudaram.

Usando uma lib em Ruby é relativamente fácil.

Inicialmente, é preciso instalar o Bundler caso não tenha:

$ gem install bundler
$ git clone https://github.com/sorich87/github-to-bitbucket-issues-migration
$ cd github-to-bitbucket-issues-migration
$ bundle install

Se tudo der certo, basta executar a lib:

$ bundle exec ruby cli.rb -u USER -p PASS -r USER/REPO -o issues.zip

Pronto! Suas issues já estão no formato suportado pelo Bitbucket e prontas para serem importadas.

SSL Connect Error

Quando tentei rodar no Windows, deu um erro na conexão:

c:/Ruby193/lib/ruby/1.9.1/net/http.rb:800:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify faile  
d (Faraday::SSLError)  

Ainda bem que achei uma forma fácil de corrigir isso:

$ wget http://curl.haxx.se/ca/cacert.pem
$ SSL_CERT_FILE=cacert.pem bundle exec ruby cli.rb -u USER -p PASS -r USER/REPO -o issues.zip

Importando as issues

A forma mais fácil é através do painel de controle do repositório no Bitbucket. Atualmente a URL é no seguinte formato:

https://bitbucket.org/[user]/[repo]/admin/issues/import-export  

image

Perfeito! Mas lembre-se que todas as issues existentes no Bitbucket serão removidas.

Caso queira saber mais sobre o formato de issues do Bitbucket: