How we configure repositories
Most repositories have a name pattern like this:
open-telemetry/opentelemetry-foo. The reason to include
opentelemetry in the
name of the repository is to simplify repositories distinction in forks. So when
one will fork the repository - fork's name will still indicate that this
repository is from OpenTelemetry organization.
- Every repository has two teams associated with it. Typically for the
opentelemetry-foothey will be named
foo-maintainersis a child of
foo-approversas it always contains subset of people and defines larger scope of privileges.
- Even though the members of
foo-maintainersare included in
foo-approverstransitively, every member of
foo-maintainersshould be included in
foo-approversexplicitly, and with the "Maintainer" GitHub privileges. So repository maintainers can invite new approvers to the team.
- The team
Writepermissions for the repository.
- The team
Maintain (beta)permissions for the repository.
CODEOWNERSfile on the repository should include superset of people from both teams.
- Every repository has Admins group defined as Admins for the repository.
- Some repositories may include more individuals outside of approvers and
maintainers teams with the
Writepermissions. Typically for issues tracking and triage purpose.
- Some repositories may include more individuals with
Adminpermissions. Typically to help set up repository, CI, web hooks or other administrative work.
master branch is set as default. And protected with the following
Require pull request reviews before mergingsetting. Make sure
Require review from Code Ownersis checked.
- The default setting for
Required approving reviewsis
1approval. Individual repositores may opt-in for bigger number of required reviews.
- Every repo MUST enforce
Require status checks to pass before mergingsection.
- It is a good practice to check the
- Repository MUST enforce
Restrict who can push to matching branchessetting to only allow the members of
foo-maintainersto push to the
It is recommended to set the following settings:
- Only set "Allow squash merging" for the Merge button. It will ensure clean history for the repository.