Issues Migration
What Gets Migrated
Issues are created on GitHub with the following structure:
**Migrated from Bitbucket**
- Original Author: @alice-github (or **Alice Smith** *(no GitHub account)*)
- Original Created: 2023-05-15T10:30:00Z
- Original URL: https://bitbucket.org/...
- Kind: bug
- Priority: major
---
[Original issue description]
GitHub displays:
- Reporter: Your migration account (the person running the script)
- Created Date: Today (migration date)
- Assignee: Can be set if mapped (API supports this)
What IS Preserved
- ✅ Issue Numbers: Preserved exactly from Bitbucket (placeholders fill gaps).
- ✅ Title: Migrated as-is.
- ✅ Description: Full content with markdown preserved.
- ✅ Assignees: Set via API if user mapping exists.
- ✅ Labels: Applied (e.g., 'migrated-from-bitbucket', 'type: {kind}', 'priority: {priority}').
- ✅ Milestones: Automatically created on GitHub and applied to issues.
- ✅ State (open/closed): Set based on original state.
- ✅ Original Timestamps: Mentioned in description.
- ✅ Original Authors: Mentioned and @tagged in description for notifications.
- ✅ Votes: Noted in description.
- ✅ Kind and Priority: Noted in description and applied as labels.
- ✅ Issue Types: Mapped to GitHub issue types if configured, otherwise fall back to labels.
- ✅ Comments: All comments migrated with topological sorting for threaded replies.
- ✅ Attachments: Downloaded and uploaded to GitHub.
- ✅ Inline Images: Extracted and uploaded to GitHub.
- ✅ Issue Changes: Status, assignee, and other changes are migrated as comments.
What Is NOT Preserved
- ❌ Original Author as Creator: API limitation - migration account is shown as creator.
- ❌ Original Creation Date: API limitation - shows migration date.
- ❌ Watchers: No equivalent field in GitHub.
- ❌ Custom Fields: Bitbucket custom fields are not migrated.
- ❌ Issue Type Native Mapping: Falls back to labels if no GitHub issue type configured.
- ❌ Comment Edit History: Only final version migrated, changes noted in comment body.
Handling Non-Migratable Information
- Deleted Users: Noted as "Unknown (deleted user)" in description and comments.
- Unmapped Users: Mentioned as "Name (no GitHub account)" in description; not assigned.
- Placeholders for Gaps: Issues deleted in Bitbucket are created as closed placeholder issues to maintain numbering.
- Attachments and Images: See Attachment Migration and Image Migration.