Blog DevSecOps Enhanced migration from Bitbucket Server and Bitbucket Cloud to GitLab
Published on: November 30, 2023
3 min read

Enhanced migration from Bitbucket Server and Bitbucket Cloud to GitLab

Learn about performance improvements and more when migrating from Bitbucket Server and Cloud to GitLab.


Atlassian is ending support for all Server products in February 2024. Learn more about the benefits of migrating from Atlassian to GitLab.

Starting from February 15, 2024, Atlassian will no longer offer technical support, security updates, or vulnerability fixes for their Server products, including Bitbucket Server.

Through improvements to our Bitbucket Server and Bitbucket Cloud importers, we've lowered the barrier to switch to GitLab, especially for large Bitbucket projects. We are happy to be able to offer a quick and effortless way to move your data to GitLab!

Let's take a look at some of these improvements.

Improvements to imports of large projects

GitLab has offered Bitbucket Server and Bitbucket Cloud importers for a long time. However, these importers operated sequentially in only one Sidekiq background job, which led to timeouts on imports of larger projects.

To solve the timeouts problem, we introduced parallel, asynchronous importers that split the work into smaller background jobs. This change was introduced in:

This change:

  • ensures that the import process doesn’t time out on a single worker
  • spreads the number of calls we make to Bitbucket API, reducing the risk of running into rate limiting

We also improved error handling so that errors raised on single objects don't stop the whole import from completing.

More improvements

Refactoring importers to be parallel was a crucial improvement, but not the only one we have made to our importers. We also worked to:

  • improve the integrity of imported data
  • extend the types of data that we import

Because Bitbucket Server and Bitbucket Cloud are separate products and require separate importers, the improvements we introduced differ for each importer. We describe them in the sub-sections below.

Bitbucket Server importer

In GitLab 16.5, we fixed a problem when imported merged and closed merge requests had no commit data associated with them, leaving the diffs empty.

In Gitlab 16.3, we began importing reviewers and in Gitlab 16.6, we began importing pull request approvals.

Bitbucket Cloud importer

In GitLab 16.6, we fixed a problem that users encountered when a pull request on Bitbucket Cloud was squashed and merged, and the branch deleted. When these pull requests were imported to GitLab, the resulting merge requests didn't have associated commits. The problem was addressed by associating merge commits to imported merge requests.

Notes on issues and pull requests can contain references (links) to code, issues, comments, pull requests, and more. Previously, these were imported as is, which left comments with strangely formatted, unclickable links. We fixed this in GitLab 16.6 by converting refs to GitLab refs. Also, we no longer import deleted notes, which caused data errors.

Also for the Bitbucket Cloud importer, we began importing LFS objects in GitLab 16.5 and pull request reviewers in GitLab 16.6.

Take advantage of importers today

With the improvements described, the experience of switching from Bitbucket Server or Bitbucket Cloud to the GitLab DevSecOps platform is better than ever! Check out the Bitbucket Server importer documentation or the Bitbucket Cloud importer documentation to get started today.

For GitLab self-managed instances, to benefit from parallel Bitbucket Cloud importer, administrators must enable the bitbucket_parallel_importer feature flag. The Bitbucket Server importer is always parallel on GitLab self-managed and

We want to hear from you

Enjoyed reading this blog post or have questions or feedback? Share your thoughts by creating a new topic in the GitLab community forum. Share your feedback

Ready to get started?

See what your team could do with a unified DevSecOps Platform.

Get free trial

Find out which plan works best for your team

Learn about pricing

Learn about what GitLab can do for your team

Talk to an expert