CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 00:10:45 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"0a5db5e849fec57a751e305b4a8be295"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=%2B5RvKkSj%2FlSr6fenoWDgMBknoFJmecQfmR1kLrSyqVjtbcfM6c%2BCy8gIPAu%2FEwUVFXtutwBuICU8b02elT5%2Ft7YY2wbXjJnUom038rT1IPJrZzAk9aSqw7qD89R2Dwif3cjNuor1zzJTd%2FRa1DIHRF2XqUIaUTeVuAnBUlaePcnVmKvrsSCnZp4zF7osqNefeGm%2Fp47zNlv%2F0jDrB4AuIleOQ1o32OwRqBCcV5MCCD1vVim%2BFvZfm1sKTcX1svhRvVC5qlg4kObAkBUZKhZbFw%3D%3D--miLLw2emxOy5GqXQ--fOJYCpAO9fUQZWA%2Ba6NW1Q%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1323268299.1753229445; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 00:10:45 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 00:10:45 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: B048:1D735C:1E66ED:2A3CB3:68802885
Inflight Branch Process · dotnet/maui Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Inflight Branch Process
Matthew Leibowitz edited this page May 31, 2025
·
7 revisions
To ensure a smooth development process, .NET MAUI follows a structured branching strategy with two active branches at all times:
- Current – The ongoing development branch where new features and fixes are continuously merged.
-
Candidate – The stabilization branch that prepares for merging into
main
.
This system improves testing reliability and prevents unstable changes from affecting the main branch prematurely.
-
Sync inflight/current with main
- Regularly rebase inflight/current on main to keep it up to date.
-
Create inflight/candidate from inflight/current
- When
candidate
is needed for stabilization, it is branched fromcurrent
.
- When
-
Continue merging PRs into inflight/current
- While
candidate
stabilizes, ongoing development continues incurrent
.
- While
-
Merge inflight/candidate into main
- Once
candidate
is stable, it gets merged intomain
.
- Once
-
Delete inflight/candidate
- After merging, the
candidate
branch is removed.
- After merging, the
-
Rebase inflight/current on main
- Ensures
current
reflects all changes frommain
.
- Ensures
-
Create new inflight/candidate from inflight/current
- The cycle repeats for the next set of releases.
Many PRs get lost while waiting for CI, delaying testing and validation. This workflow shifts the review process to the beginning, ensuring that:
- PRs are tested earlier in development.
- The main branch remains stable until inflight branches are fully validated.
- PRs move through the pipeline more efficiently with proper CI checks.
-
Most PRs should target
main
, and the team will handle retargeting toinflight/current
if necessary. -
PRs addressing candidate stability should target
inflight/candidate
until it is stable and ready to merge intomain
. -
Syncfusion manages much of the monitoring and stabilization efforts for
candidate
.
- Every PR is reviewed by a core team member before merging.
- Approved PRs are retargeted to
inflight/current
, where CI testing runs. - Only stabilization-related PRs are merged into
inflight/candidate
.
- The nightly feed depends on
main
andinflight/current
, so fixing build errors here is critical. - If
inflight/candidate
doesn't require immediate fixes, prioritize stabilizingcurrent
by addressing failing tests.
- If a PR breaks
candidate
and takes too long to fix, revert it and resolve the issue separately. - When fixing a flakey test, check how it behaves in
main
. If mergingcandidate
intomain
doesn't change behavior, defer the fix tocurrent
.
-
All PRs are reviewed by a .NET MAUI engineer before merging into
inflight/current
. - Merged PRs undergo CI testing alongside other PRs and internal validation.
-
After one week,
inflight/current
transitions intoinflight/candidate
, where only stabilization PRs are accepted. -
Once
candidate
passes internal testing and CI, it merges intomain
, ensuring a stable release.
You can’t perform that action at this time.