Skip to content

Commit d32bf7b

Browse files
Document maintainers repo permissions
1 parent 8f0290d commit d32bf7b

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed

building/config.json

+6
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@
6767
"path": "building/github/maintainers-pull-request-guide.md",
6868
"title": "Maintainers Pull Request Guide"
6969
},
70+
{
71+
"uuid": "3598be40-752a-4223-8828-c08dc3320a20",
72+
"slug": "github/maintainers-repo-permissions",
73+
"path": "building/github/maintainers-repo-permissions.md",
74+
"title": "Maintainers Repo Permissions"
75+
},
7076
{
7177
"uuid": "7cc6cb11-2502-49ea-b7c1-6e501720c9ae",
7278
"slug": "github/gha-best-practices",

building/github/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ We also have several Exercism-specific Pull Request guides:
2020
- [How to make a great Pull Request][how-to-make-a-great-pr]
2121
- [The Contributors' Guide to Pull Requests][contributors-pr-guide]
2222
- [The Maintainers' Guide to Pull Requests][maintainers-pr-guide]
23+
- [Maintainers Repo Permissions][maintainers-repo-permissions]
2324

2425
## Tooling
2526

@@ -40,6 +41,7 @@ There is also GitHub-specific tooling you can use:
4041
[great-pr]: https://exercism.org/docs/community/being-a-good-community-member/pull-requests
4142
[contributors-pr-guide]: /docs/building/github/contributors-pull-request-guide
4243
[maintainers-pr-guide]: /docs/building/github/maintainers-pull-request-guide
44+
[maintainers-repo-permissions]: /docs/building/github/maintainers-repo-permissions
4345
[how-to-make-a-great-pr]: /docs/community/being-a-good-community-member/pull-requests
4446
[pro-git]: https://git-scm.com/book/en/v2
4547
[git]: https://git-scm.com/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Maintainers Repo Permissions
2+
3+
A track maintainer is someone who is a member of the track's GitHub team.
4+
Becoming a member of a track team is _invitation only_.
5+
6+
```exercism/note
7+
If you'd like to become a track mainainer, please open a topic on the [forum](https://forum.exercism.org/c/exercism/building-exercism/125).
8+
```
9+
10+
## Maintenance category
11+
12+
The are five maintenance categories:
13+
14+
1. `wip-track`
15+
2. `unmaintained`
16+
3. `maintained-solitary`
17+
4. `maintained-autonomous`
18+
5. `maintained`
19+
20+
A tracks' maintenance category is determined by three variables:
21+
22+
1. Whether the track is active (i.e. students can join the track on the website)
23+
2. The number of track maintainers
24+
3. The number of track maintainers who are also in the `cross-track-maintainers` GitHub team
25+
26+
To determine the maintenance category, find the first category that matches the track from this table:
27+
28+
| Category | Active? | Number of maintainers | Number of cross-track maintainers |
29+
| ----------------------- | ------- | --------------------- | --------------------------------- |
30+
| `wip-track` | No | Any | Any |
31+
| `unmaintained` | Yes | 0 | 0 |
32+
| `maintained-solitary` | Yes | 1 | 0 |
33+
| `maintained-autonomous` | Yes | > 0 | = Number of maintainers |
34+
| `maintained` | Yes | > 0 | < Number of maintainers |
35+
36+
## Repo permissions
37+
38+
The maintenance category is used to set the track's GitHub repo(s) permission(s).
39+
40+
| Category | Requires PR | Requires PR approval | Cross-track team reviews |
41+
| ----------------------- | ----------- | -------------------- | ------------------------ |
42+
| `wip-track` | No | No | No |
43+
| `unmaintained` | Yes | Yes | Yes |
44+
| `maintained-solitary` | Yes | Yes | Yes |
45+
| `maintained-autonomous` | Yes | No | No |
46+
| `maintained` | Yes | No | No |
47+
48+
```exercism/caution
49+
The `wip-track` category is the only category that allows maintainers to push to `main`.
50+
```
51+
52+
```exercism/caution
53+
Tooling repos will _always_ require PR approval, as their contents are protected via a [CODEOWNERS file](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).
54+
```

building/tracks/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ csharp
100100

101101
## Maintenance
102102

103+
### Repo permissions
104+
105+
Each track is (automatically) assigned a [maintenance category](/docs/building/github/maintainers-repo-permissions#maintenance-category), which determines the [track maintainer's GitHub repo permissions](/docs/building/github/maintainers-repo-permissions#repo-permissions).
106+
103107
### Avoiding triggering unnecessary test runs
104108

105109
When you merge a track PR that touches an exercise, it triggers _all_ the latest published iteration of students' solutions to be re-tested.

0 commit comments

Comments
 (0)