How to completely migrate from Gitlab to Github: Part 2 (Observations)

  • A trial migration of 1392 merge requests and 2700 issues took 267 minutes.

What works well

  1. Title, description, and comments are migrated with all the data.

  2. If there are attachments or images those are uploaded to the S3 bucket and linked back to where they are expected.

  3. If the tool is unable to find issues in Gitlab it creates a placeholder issue in GitHub with the title [PLACEHOLDER] - for issue #41.

Transferring Issues
Transferring 2700 issues.
Added placeholder issue for GitLab issue #1829.
Added placeholder issue for GitLab issue #1987.
  1. Issue numbers are kept consistent with Gitlab but this is not guaranteed.

  2. MRs with deleted branches are created as issues with the label gitlab merge request and the title is appended with [Merged]. In this case, the tool tries to comment the commit sha for the merge commit.

  3. Code review comments are added as comments in PR with a link to the files and line number.

What didn't work well?

  1. When the tool fails to read an issue or MR there is no placeholder created. This can make the Gitlab <-> GitHub issue numbers different. It may also lead to incorrect linking between issues and MR.

  2. When a migration is resumed many duplicate MRs and Issues are created. It could be better to start fresh again.

  3. Github API has a primary limit of 5000 req per hour and also a secondary limit. If requests these limits are exceeded, then the tool waits for 1000sec and the transfer resumes after waiting for 1Hr. But when I transferred around 4100 (MR + Issues) this limit was not hit. I got this error while transferring another trial repo with 600 objects after 15 hours.

Abuse detected for request POST /repos/{owner}/{repo}/pulls
Retrying after 1000 seconds!

Did you find this article valuable?

Support Pranav Padmasali by becoming a sponsor. Any amount is appreciated!