|
| 1 | +# Process to create an alpha branch for an upcoming version |
| 2 | + |
| 3 | +Base a new version branch off the previous version's "feature complete alpha branch". That should provide the structure for the content coming in the ealier versions. |
| 4 | + |
| 5 | +> This does increase the likelihood of merge conflicts as the "draft-vN" branch matures, and that work is merged into the earlier versions "feature complete alpha branch". The plan is to merge the draft-vN work into the corresponding "feature complete alpha" branch after each committee meeting. That should pay dividends as we move through upcoming versions. |
| 6 | +
|
| 7 | +## Ordering patches |
| 8 | + |
| 9 | +Copilot can do a good job managing conflicts when applying patches, unless the scope of merge conflicts becomes too great. As a result, the order of applying patches is important. After several experiments, the best order is to apply the patches from most files changed to fewest files changes. Where different patches have changed the same number of files, order should work to minimize the potential conflict opportunities. |
| 10 | + |
| 11 | +For example, this order worked best for V9: |
| 12 | + |
| 13 | +1. *Native integers* |
| 14 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1457.patch |
| 15 | + - Medium - 9 files, 0 potential conflict opportunities |
| 16 | + - arrays.md |
| 17 | + - classes.md |
| 18 | + - conversions.md |
| 19 | + - enums.md |
| 20 | + - expressions.md |
| 21 | + - lexical-structure.md |
| 22 | + - portability-issues.md |
| 23 | + - statements.md |
| 24 | + - types.md |
| 25 | + - unsafe-code.md |
| 26 | + - variables.md |
| 27 | +1. *Init Accessors* |
| 28 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1452.patch |
| 29 | + - Medium 7 files, 4 potential conflict opportunities |
| 30 | + - attributes.md |
| 31 | + - basic-concepts.md |
| 32 | + - classes.md: 1 |
| 33 | + - expressions.md: 1 |
| 34 | + - interfaces.md |
| 35 | + - lexical-structure.md: 1 |
| 36 | + - portability-issues.md: 1 |
| 37 | +1. *Function pointers* |
| 38 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1459.patch |
| 39 | + - Large - 6 files, 8 potential conflict opportunities |
| 40 | + - expressions.md: 2 |
| 41 | + - lexical-structure.md: 2 |
| 42 | + - portability-issues.md: 2 |
| 43 | + - standard-library.md |
| 44 | + - types.md: 1 |
| 45 | + - unsafe-code.md: 1 |
| 46 | +1. *Static anonymous functions* |
| 47 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1461.patch |
| 48 | + - Small - 4 files, 5 potential conflict opportunities |
| 49 | + - conversions.md: 1 |
| 50 | + - expressions.md: 2 |
| 51 | + - unsafe-code.md: 1 |
| 52 | + - variables.md: 1 |
| 53 | +1. *Top level statements* |
| 54 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1454.patch |
| 55 | + - Medium - 4 files, 3 potential conflict opportunities |
| 56 | + - attributes.md: 1 |
| 57 | + - basic-concepts.md |
| 58 | + - namespaces.md |
| 59 | + - portability-issues.md: 3 |
| 60 | +1. *Records* |
| 61 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1458.patch |
| 62 | + - Large - 3 files, 7 potential conflict opportunities |
| 63 | + - classes.md: 2 |
| 64 | + - expressions.md: 3 |
| 65 | + - lexical-structure.md: 2 |
| 66 | +1. *Covariant return types* |
| 67 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1462.patch |
| 68 | + - Small - 3 files, 8 potential conflict opportuntities (this was the toughest set of conflicts) |
| 69 | + - classes.md: 3 |
| 70 | + - expressions.md: 4 |
| 71 | + - interfaces.md: 1 |
| 72 | +1. *Target-typed new* |
| 73 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1469.patch |
| 74 | + - Small - 3 files, 8 potential conflict opportunities |
| 75 | + - conversions.md: 2 |
| 76 | + - expressions.md: 5 |
| 77 | + - statements.md: 1 |
| 78 | +1. *Module initializers* |
| 79 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1467.patch |
| 80 | + - Small - 3 files, 5 potential conflict opportunities |
| 81 | + - attributes.md: 2 |
| 82 | + - portability-issues.md: 3 |
| 83 | + - standard-library.md |
| 84 | +1. *Target-typed conditional expressions* |
| 85 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1465.patch |
| 86 | + - Small - 2 files, 8 potential conflict opportunities. (This set was also very difficult conflicts) |
| 87 | + - conversions.md: 3 |
| 88 | + - expressions.md: 5 |
| 89 | +1. *Pattern matching* |
| 90 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1460.patch |
| 91 | + - Medium - 2 files, 3 potential conflict opportunities |
| 92 | + - lexical-structure.md: 3 |
| 93 | + - patterns.md |
| 94 | +1. *Attributes and extern on local functions* |
| 95 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1466.patch |
| 96 | + - Small - 2 files, 3 potential conflict opportunities |
| 97 | + - attributes.md: 2 |
| 98 | + - statements.md: 1 |
| 99 | +1. *More better nullable* |
| 100 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1221.patch |
| 101 | + - Small - 2 files, 3 potential conflict opportunities |
| 102 | + - attributes.md: 3 |
| 103 | + - standard-library |
| 104 | +1. *Lambda discard parameters* |
| 105 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1464.patch |
| 106 | + - Small - expressions.md: 6 |
| 107 | +1. *New features for partial members* |
| 108 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1468.patch |
| 109 | + - Small - classes.md: 3 |
| 110 | +1. *Unconstrained type parameter annotations* |
| 111 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1470.patch |
| 112 | + - Small - classes.md: 4 |
| 113 | +1. *Variance safety for static interface members* |
| 114 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1471.patch |
| 115 | + - Small - interfaces.md: 2 |
| 116 | +1. *Extension GetEnumerator in foreach* |
| 117 | + - https://patch-diff.githubusercontent.com/raw/dotnet/csharpstandard/pull/1472.patch |
| 118 | + - Small - statements.md: 1 |
0 commit comments