{"id":19606698,"url":"https://github.com/ccntrq/git-suggest-reviewer","last_synced_at":"2026-03-03T22:31:40.732Z","repository":{"id":61936367,"uuid":"556253136","full_name":"ccntrq/git-suggest-reviewer","owner":"ccntrq","description":"Suggest candidates for a code review based on git history","archived":false,"fork":false,"pushed_at":"2024-06-28T10:36:55.000Z","size":646,"stargazers_count":5,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-30T02:58:14.856Z","etag":null,"topics":["code-review","git"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/git-suggest-reviewer","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccntrq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-23T12:32:26.000Z","updated_at":"2024-07-23T21:59:03.000Z","dependencies_parsed_at":"2023-12-20T15:33:25.428Z","dependency_job_id":"58517d1b-3749-4e7e-b56a-9c3e44498e02","html_url":"https://github.com/ccntrq/git-suggest-reviewer","commit_stats":{"total_commits":182,"total_committers":3,"mean_commits":"60.666666666666664","dds":0.4340659340659341,"last_synced_commit":"3056970b9fb07d71bbdb3eedf250516330732e49"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ccntrq/git-suggest-reviewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccntrq%2Fgit-suggest-reviewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccntrq%2Fgit-suggest-reviewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccntrq%2Fgit-suggest-reviewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccntrq%2Fgit-suggest-reviewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccntrq","download_url":"https://codeload.github.com/ccntrq/git-suggest-reviewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccntrq%2Fgit-suggest-reviewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30064303,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-review","git"],"created_at":"2024-11-11T10:06:45.410Z","updated_at":"2026-03-03T22:31:40.714Z","avatar_url":"https://github.com/ccntrq.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git-suggest-reviewer\n\n## Suggest candidates for a code review based on git history\n\nOften the best possible code reviewers are the people who wrote or previously\ntouched the code that has been modified by the changes to review.\n\nThis tool generates a top-10 of these people based on the git history of the\nfiles touched between two revisions. The top-10 is ranked by the number of\nchanged lines of each previous author.\n\n## Example\n\n```\n~/Code/sample-project$ git suggest-reviewer 1.7.13\n\nAuthor         Changed Lines  Last Commit Date\nPeter Pan      87             2022-08-19\nCaptain Hook   62             2022-09-19\nWendy Darling  12             2022-02-10\nTinker Bell    8              2021-09-15\n```\n\n## Install\n\nYou can either download this repository and build the code yourself, or grab the\nlatest release from `npm`:\n\n```\nnpm i --global git-suggest-reviewer\n```\n\n## How to use\n\n### CLI\n\nAfter globally installing you can invoke this like a normal git subcommand:\n\n```\ngit suggest-reviewer COMMIT_OR_TAG_OF_BASE_REVISION\n```\n\nAlternatively you can use the full command:\n\n```\ngit-suggest-reviewer COMMIT_OR_TAG_OF_BASE_REVISION\n```\n\n### Library\n\nYou can also use this as a library inside of your TS/JS projects.\n\n```ts\nimport {gitSuggestReviewer, renderTopReviewerTable} from 'git-suggest-reviewer';\n\nconst baseRevision = '1.7.13';\nconst topReviewer = gitSuggestReviewer(baseRevision);\nconst formerColleagues = ['Captain Hook'];\nconst withoutFormerColleaguesAndAboveTenChangedLines = topReviewer.filter(\n  reviewer =\u003e\n    !formerColleagues.includes(reviewer.author) \u0026\u0026 reviewer.changedLines \u003e 10\n);\n\nconsole.log(\n  renderTopReviewerTable(withoutFormerColleaguesAndAboveTenChangedLines)\n);\n```\n\n## Documentation\n\nYou can find documentation for the public interface [here](https://ccntrq.github.io/git-suggest-reviewer/)\n\n## Dependencies\n\nThis package runs on `node` and depends on an `git` executable to be available.\n\n- `node \u003e=v16.0.0`\n- `git` executable on your `$PATH`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccntrq%2Fgit-suggest-reviewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccntrq%2Fgit-suggest-reviewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccntrq%2Fgit-suggest-reviewer/lists"}