-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Description
The infra enabling ArPow (arcade-powered source-build) involves some .patch files checked into this repo at eng/source-build-patches/*.patch that fix up the repo to work for source-build. These patch files are prone to conflicting with dev changes, and may block some PRs until the PR author fixes up the patch file to match. The changes in these .patch files should be incorporated into the main branch of this repo to remove this possibility.
Some background on source-build patches, for anyone who isn't familiar with previous pushes for patch incorporation:
A patch is essentially just a commit that has been extracted from Git into a .patch file that can be applied on demand. The effort to build .NET from source involves creating patches because repos make changes that are incompatible with source-build and need to be fixed up after the original released source code has already been finalized. When the original repo gets PRs over time for servicing, the PR changes sometimes conflict with the source-build patches, just like a merge conflict. The patch files need to be fixed up when this happens, which is a significant maintenance problem for the source-build team.
Several times, the source-build team has pushed for "patch incorporation". This means to merge the commit represented in the .patch file into the original repo's official branch. Doing so prevents patch merge conflicts, because there's no longer a patch to merge against. However, patches inevitably pile up again when getting subsequent servicing releases to work in source-build.
ArPow lets us end this maintenance-heavy process. By running source-build inside CI, patch merge conflicts will immediately block PR validation, so fixup can be handled in place, not solely by the source-build team. Running source-build in CI also means creating new patches won't be necessary except in exceptional circumstances.
This issue tracks using git am eng/source-build-patches/*.patch and submitting a PR to incorporate the patches, or making changes to the repo that accomplish the same goals as the patches.