Dynamically detect Source-Feature as Pre-Migration Validation for GitLab Import Engine

Summary

  • Customer opened a support ticket to request a feature proposal for the following:
  • For migrating from Bitbucket to GitLab, implement pre-migration validation that dynamically detects available features from source repositories to improve the reliability and transparency of repository migrations.

Problem Statement

Currently, the GitLab import UI presents a standard set of migration options regardless of whether the source repository actually supports those specific features. This leads to:

  • User confusion about available migration options
  • "Silent skips" where users expect data that doesn't exist in the source
  • Unnecessary troubleshooting of "missing" data that was never available
  • Increased confusion and cognitive load for engineers during migration planning

Proposed Solution

Implement a pre-migration "handshake" mechanism that:

  1. Feature Detection: GitLab performs an API call to the source platform (e.g., Bitbucket Cloud/Server) before displaying the import UI
  2. Dynamic UI Updates: Automatically disable checkboxes for unsupported features in the Import UI
  3. Clear Communication: Provide informative tooltips explaining why certain options are unavailable

Expected Benefits

  • Reduced Cognitive Load: Engineers can focus on available options without guessing what will work
  • Clear Expectations: Users understand exactly what data will be migrated before starting the process
  • Improved Reliability: Eliminates confusion about missing data that was never available in the source
  • Better User Experience: More transparent and predictable migration workflow

Acceptance Criteria

  • GitLab queries source repository API to detect available features before showing import options
  • Import UI dynamically disables unsupported feature checkboxes
  • Informative tooltips explain why specific features are unavailable
  • Feature detection works for major source platforms (starting with Bitbucket Cloud/Server)
  • Graceful fallback behavior when source API is unavailable or returns errors

Use Case Example

When importing from a Bitbucket repository that doesn't support "Releases":

  • GitLab detects this limitation via API
  • The "Import Releases" checkbox is automatically disabled
  • A tooltip explains: "Releases are not available in the source Bitbucket repository"
Edited Mar 02, 2026 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading