rezensent
The rezensent (german for reviewer) is a github app which help managing big pull requests in a repository divided by code ownership rules.
Idea
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
How it works
Terminology
term | explanation |
---|---|
managed pull request | A pull request labeled with the 'manage label' |
review pull request | A pull request created by the app per team |
codeowners | CODEOWNERS |
Steps
-
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.
Process description
Usage
Public App
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.
Docker
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 |
SCHEDULE_DELAY | The initial scheduler delay before first run | no | 0 |
SCHEDULE_TIMEOUT | The delay between scheduler runs | no | 1800000 |