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:
- Feature Detection: GitLab performs an API call to the source platform (e.g., Bitbucket Cloud/Server) before displaying the import UI
- Dynamic UI Updates: Automatically disable checkboxes for unsupported features in the Import UI
- 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 by 🤖 GitLab Bot 🤖