All merges into the main
branch must be done through a pull request process to ensure changes are reviewed and approved by code owners.
Contributors with the write role can approve pull requests.
Contributors must ensure that the following criteria are met before a pull request (PR) can be merged:
- Has a clear and concise title, and a detailed description explaining the changes.
- All conversations are resolved.
- All status checks, including unit tests, pass successfully.
- Code changes must have XML documentation text (i.e.
<summary>
) for all public visible types and members. See Compiler Warning (level 4) CS1591 for more details. - The author confirmed code changes were tested within the Unity Editor and on at least one XR device.
- Must have at least one approval from an assigned code owner. Some circumstances may require additional approvals.
- Pull request approvals are dismissed when a new commit is pushed.
If any of these criteria are not met, the pull request can not be merged.
The pull request author should also consider adding the following before a PR is merged:
- References to Project issues that is being fixed or implemented.
- New or updated unit tests to validate the code changes.
- Visual updates should have screen shots or videos demonstrating the changes.
If a merged pull request breaks subsequent builds or automated tests, the author must fix the failure as soon as possible, or risk having the change reverted.
There may be times when a pull request contains changes that need further consideration before approval. Such occurrences include, but not limited to, design and breaking changes. In such cases, you should block the pull request by adding the "Merge: Blocked" label, and kindly explain your reasoning for blocking. Then notify the Project's Maintainers.
If a pull request contains visual changes to UI controls that can't be easily undone or turned off by an application developer, these pull requests must be blocked until the Project Maintainers review the change. Mark these changes with the "Type: Design Change" label.
A change is considered breaking if it contains incompatible API or behavior changes, such that it will break applications built on a previous released versions of a Project package. If a pull request introduces a breaking change, these pull requests must be blocked. Mark these changes with the "Type: Breaking Change" label.
Only project Maintainers can unblock a pull request, and remove the "Merge: Blocked" label. To unblock a pull request, Maintainers follow the decision making rules in the GOVERNANCE.md file.