The rezensent (german for reviewer) is a github app which help managing big pull requests in a
repository divided by code ownership rules.
Split a pull request into several smaller ones along the lines of ownership.
Then maintain the spitted pull requests using the app.
It is loosely based on the idea of googles rosie
With Rosie, developers create a large patch, either through a find-and-replace
operation across the entire repository or through more complex refactoring
tools. Rosie then takes care of splitting the large patch into smaller
patches, testing them independently, sending them out for code review, and
committing them automatically once they pass tests and a code review. Rosie
splits patches along project directory lines, relying on the code-ownership
hierarchy described earlier to send patches to the appropriate reviewers
term | explanation |
---|---|
managed pull request | A pull request labeled with the 'manage label' |
team pull request | A pull request created by the app per team |
codeowners | CODEOWNERS |
Whenever a pull request is labeled with the configured 'manage label', the app
will create a pull request with just the changes for each team.
Then each team can review their changes separated from the other teams and
when the pull request is approved it can be merged.
As soon as the app detects a merge, the managed pull request is updated to the
HEAD of it's base branch. And all remaining team pull requests are
update/recreated.
When there are no changes left, the managed pull request is closed as all
changes are integrated into it's base branch.
The app is publicly available for free at https://github.com/apps/rezensent.
You can just add it to your github repository and complete the onboarding process.
The app could be hosted using the provided docker image.
The container need to be configured by the following environment variables:
name | description | required | default |
---|---|---|---|
APP_ID | The GitHub app id | yes | |
PRIVATE_KEY | The private key obtained from github | yes | |
WEBHOOK_SECRET | The webhook secret set during app creation | yes | |
PORT | The port of the app inside the container | no | 3000 |