microsoft / microsoft/fluentui-blazor
[Core] Reorganise the repository branches for v5
Open
@dvoituron is already working on this.
Since Sep 7, 2026.
v5
- Dominant language
- C#
- Stars
- 4.8k
- Forks
- 483
- Avg merge
- 14h 41m
- Merged PRs (30d)
- 68
Description
Reorganise the repository branches for v5: archive-v4 and dev (v5 code)
📅 UPDATED: 2026-09-16
Context and motivation
Version 5 will soon become the main development version of Fluent UI Blazor.
devcurrently contains the version 4 codebase.dev-v5contains the upcoming version 5 codebase.
The repository will keep dev as its default branch and replace its content with the version 5 codebase.
The existing version 4 codebase will first be preserved in archive-v4.
Target branch structure
archive-v4: version 4 maintenance.dev: default branch and active version 5 development.
Action plan
1. Prepare dev for the v4 archive
- Temporarily freeze merges and direct pushes to
devanddev-v5. - Update v4 CI references from
devtoarchive-v4. - Update version calculation to recognize
archive-v4as the v4 maintenance branch. - Update the v4 Dependabot configuration.
- Update v4-specific scripts, badges, and links.
- Verify that the v4 builds and tests pass.
2. Create archive-v4
- Create
archive-v4from the latest commit ondev:git switch -c archive-v4 - Push
archive-v4to the Microsoft repository. - Confirm that
devandarchive-v4point to the same commit before continuing. - Protect
archive-v4against accidental deletion or force pushes.
3. Prepare dev-v5 for its future dev name
- Update GitHub Actions and Azure Pipelines triggers from
dev-v5todev. - Update version calculation to recognize
devas the v5 development branch. - Update the v5 Dependabot configuration.
- Replace
dev-v5references in documentation, contribution instructions, scripts, badges, and links. - Verify that the v5 builds and tests pass.
- Freeze
dev-v5after the final preparation changes are merged.
4. Merge the v5 history and content into dev
- Fetch the latest
devanddev-v5branches in a dedicated clean clone. - Merge
dev-v5intodevwith--allow-unrelated-historiesbecause the branches have no common ancestor. - Replace the merge result with the exact tree from
dev-v5before committing. - Confirm that the resulting commit has both the v4 and v5 histories as parents.
- Confirm that the resulting
devcontent is identical todev-v5. - Push the merge commit to
dev, using an approved temporary protection bypass if required. - Do not squash or rebase this merge, as doing so would not connect both histories.
## ---
git fetch origin
git switch dev-v5
git pull --ff-only origin dev-v5
git switch dev
git pull --ff-only origin dev
git merge dev-v5 --allow-unrelated-histories --no-commit
git restore --source=dev-v5 --staged --worktree -- .
git commit -m "Merge dev-v5 into dev and adopt its content"
## ---
# Identical content
git diff --exit-code dev-v5
# All commits in dev-v5 are accessible from dev
git merge-base --is-ancestor dev-v5 dev
# If both commands return the code 0, push dev:
git push origin dev
# Create a branch for the future PR
git switch -c merge-dev-v5-into-dev
git push -u origin merge-dev-v5-into-dev
# Create the PR
gh pr create --base dev --head merge-dev-v5-into-dev --title "Merge dev-v5 into dev and adopt its content" --body "Merge dev-v5 history into dev and adopt its current content."
# Merge it into dev
gh pr merge merge-dev-v5-into-dev --repo microsoft/fluentui-blazor --merge --delete-branch --admin
## ---
# Verify the result
git switch dev
git pull --ff-only origin dev
git merge-base --is-ancestor dev-v5 dev
5. Verify branch protection and repository settings
- Confirm that
devremains the GitHub default branch. - Update the required checks and protection rules on
devfor v5 development. - Verify the protection rules on
archive-v4for v4 maintenance. - Verify that the
dev - Restrict deletionsruleset still applies correctly. - Remove protection from
dev-v5only when it is ready to be deleted.
6. Verify pull requests
- Retarget existing v4 pull requests from
devtoarchive-v4. - Retarget existing v5 pull requests from
dev-v5todev. - Review each pull request diff after changing its base branch.
- Update the base branches used by bots and other automation.
7. Update external services
- Update Azure DevOps branches and policies.
- Set
devas the Azure Static Web Appsproduction_branch. - Verify GitHub Actions and Azure Pipelines triggers.
- Update external scripts, dashboards, badges, webhooks, and links.
- Verify that development packages are published from
dev. - Keep the required v4 pipelines active on
archive-v4.
8. Validate the migration
- Create a small v4 test pull request targeting
archive-v4. - Create a small v5 test pull request targeting
dev. - Verify CI, required checks, branch policies, version calculation, and package publishing.
- Verify documentation and demo deployments.
- Confirm that
devstill has the exact content ofdev-v5. - Confirm that the former
dev-v5history is an ancestor of the newdevhistory.
9. Remove obsolete branches
- Delete
dev-v5after all pull requests have been retargeted and validation has completed. - Keep
mainas the release branch for version 5 - Confirm that the final development branches are
devandarchive-v4.
git fetch origin
git switch main
git pull --ff-only origin main
git merge origin/dev --no-commit --no-ff
git restore --source=origin/dev --staged --worktree -- .
git commit -m "Merge dev into main and adopt its content"
# Validations
git diff --exit-code HEAD origin/dev
git merge-base --is-ancestor origin/dev main
git push origin main
10. Notify contributors
- Announce that
devremains the default branch and now contains version 5. - Announce that
archive-v4is the version 4 maintenance branch. - Ask contributors to run
git fetch --pruneand update their local branches. - Ask fork owners to fetch
devandarchive-v4from the Microsoft repository and publish them to their forks. - Ask contributors with existing v5 work to rebase their branches onto the new
dev.
11. Resume development
- End the temporary merge freeze after both test pull requests pass.
- Resume v4 maintenance only on
archive-v4. - Target
devfor all new v5 development. - Monitor the first builds, package publications, and deployments after the migration.
12. Rollback readiness
- Keep
archive-v4unchanged as the preserved v4 state. - Keep
dev-v5until the migration has been fully validated. - If rollback is required, revert the merge commit using its v4 parent instead of rewriting
devhistory. - Restore the previous CI, protection, and external service settings after a rollback.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.