@@ -14,14 +14,31 @@ Examples: `release/csharp/v1.0.0`, `release/csharp/v1.1.0`
1414
1515## Lifecycle
1616
17- ### Phase 1: Pre-Cutoff (Active Development)
18-
19- ```
20- main: A → B → C → D → E → F
21- \ \ \
22- release/csharp/v1.1.0: merge merge merge
17+ ### Full Release Lifecycle
18+
19+ ``` mermaid
20+ gitGraph
21+ commit id: "A"
22+ commit id: "B"
23+ branch release/csharp/v1.1.0
24+ checkout main
25+ commit id: "C"
26+ checkout release/csharp/v1.1.0
27+ merge main id: "merge C"
28+ checkout main
29+ commit id: "D"
30+ checkout release/csharp/v1.1.0
31+ merge main id: "merge D (final)" tag: "csharp/v1.1.0"
32+ checkout main
33+ commit id: "E"
34+ commit id: "F"
35+ checkout release/csharp/v1.1.0
36+ commit id: "cherry-pick fix A" tag: "csharp/v1.1.1"
37+ commit id: "cherry-pick fix B" tag: "csharp/v1.1.2"
2338```
2439
40+ ### Phase 1: Pre-Cutoff (Active Development)
41+
2542- All new commits go to ` main ` as usual.
2643- The release branch is created early from ` main ` .
2744- Periodically merge ` main ` into the release branch to keep it current.
@@ -31,23 +48,26 @@ release/csharp/v1.1.0: merge merge merge
3148
3249When the release is ready to freeze:
3350
34- 1 . Final merge of ` main ` into the release branch.
35- 2 . Tag the cutoff point (e.g., ` csharp/v1.1.0 ` ).
36- 3 . Enable branch protection (require PR + approval, no direct push).
37- 4 . Create the next release branch (e.g., ` release/csharp/v1.2.0 ` ).
51+ ``` mermaid
52+ flowchart TD
53+ A[Final merge of main into release branch] --> B[Tag the cutoff point e.g. csharp/v1.1.0]
54+ B --> C[Enable branch protection on release branch]
55+ C --> D[Create next release branch e.g. release/csharp/v1.2.0]
56+ ```
3857
3958### Phase 3: Post-Cutoff (Maintenance)
4059
41- ```
42- release/csharp/v1.1.0: ... cutoff -> cherry-pick fix A -> cherry-pick fix B
43- | |
44- tag v1.1.0 tag v1.1.1
45- ```
46-
4760- Only cherry-picks allowed, with PR review.
4861- Fixes go to ` main ` first, then cherry-picked to the release branch.
4962- Each cherry-pick batch gets a new patch tag (e.g., ` csharp/v1.1.1 ` , ` csharp/v1.1.2 ` ).
5063
64+ ``` mermaid
65+ flowchart LR
66+ A[Bug found] --> B[Fix on main via PR]
67+ B --> C[Cherry-pick to release branch via PR]
68+ C --> D[Tag new patch version]
69+ ```
70+
5171## Scope
5272
5373This applies ** only to the C# driver** . Other drivers in the monorepo are unaffected:
0 commit comments