dominium
Break large changes into smaller ones based on mandatory reviewer coverage.
Install
npm i -g dominium
- Install ripgrep
Usage
Run dominium
in the root of your git repo to split up your last commit. Your commit message and branch name are used when creating new branches.
~/myGitRepo[eslint-fix]$ git commit -am "eslint --fix accross entire codebase"~/myGitRepo[eslint-fix]$ dominiumSplitting code into 4 branches: [eslint-fix-1] 12 files owned by noah.sugarman, airbnb/someteam [eslint-fix-2] 10 files owned by bob-youruncle, amy-lobg [eslint-fix-3] 14 files owned by airbnb/uncles [eslint-fix-4] 9 files owned by no owner Proceed? [Y/n] Y Creating branch eslint-fix-1Creating branch eslint-fix-2Creating branch eslint-fix-3Creating branch eslint-fix-4 Done~/myGitRepo[eslint-fix]$ git log eslint-fix-1 --oneline -17c89b7bb5bd eslint --fix accross entire codebase 1/4
Options
--owners-file [name]
name of file containing list of owners, default MANDATORY_REVIEWERS
--max-branch-files [max]
max number of files per branch, default Infinity
Limitations / TODOs
- Doesn't read file comments such as
// MANDATORY_REVIEWERS noah bob
. - Unhelpful error messages.
- Only supports git repos.
- Doesn't know who belongs to which team, which would allow a smarter pull request coverage algorithm.
- Doesn't work if OWNERS file contains information other than teams and usernames.