{"id":14065937,"url":"https://github.com/servo/highfive","last_synced_at":"2025-07-29T21:34:18.395Z","repository":{"id":45741747,"uuid":"13803214","full_name":"servo/highfive","owner":"servo","description":"Github hooks to provide an encouraging atmosphere for new contributors","archived":false,"fork":false,"pushed_at":"2024-02-06T15:52:51.000Z","size":264,"stargazers_count":254,"open_issues_count":46,"forks_count":58,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-08-13T07:10:02.648Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/servo.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2013-10-23T13:17:05.000Z","updated_at":"2024-08-13T07:10:09.822Z","dependencies_parsed_at":"2024-08-13T07:10:08.535Z","dependency_job_id":"22a57621-4b3c-45eb-8e87-6151e7f80bd6","html_url":"https://github.com/servo/highfive","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/servo%2Fhighfive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/servo%2Fhighfive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/servo%2Fhighfive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/servo%2Fhighfive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/servo","download_url":"https://codeload.github.com/servo/highfive/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228052642,"owners_count":17862105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-08-13T07:04:51.203Z","updated_at":"2024-12-04T05:31:09.179Z","avatar_url":"https://github.com/servo.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"Highfive\n========\n\nGitHub hooks to provide an encouraging atmosphere for new contributors.\n\nDocs for the highfive instance for servo/servo repository live [on the Servo\nwiki](https://github.com/servo/servo/wiki/Highfive).\n\n## Design\n\nHighfive is built as a modular, loosely-coupled set of handlers for Github\nAPI events. Each time an API event is processed, each handler is given the\nopportunity to respond to it, either by making direct API calls (such as\nmanipulating PR labels) or using cross-handler features such as logging a\nwarning (which are aggregated at the end and posted as a single comment).\n\n## Testing\n\nPer-handler tests can be run using `python test.py`. These consist of\na set of JSON documents collected from the `tests/` subdirectory of\neach handler, using the following format:\n\n```js\n{\n  \"initial\": {\n    // Initial state of the PR before any handlers process the payload.\n    \"labels\": [],\n    \"diff\": \"\",\n    \"new_contributor\": false,\n    \"assignee\": null\n  },\n  \"expected\": {\n    // Expected state of the PR after all the handlers process the following payload.\n    // Only fields in this object will be checked. Example fields are shown below.\n    \"comments\": 5,\n    \"labels\": [\"S-awaiting-review\"],\n    \"assignee\": \"jdm\"\n  },\n  \"payload\": {\n    // Github API event payload in JSON format.\n  }\n}\n```\n\nEach test runs with a mock Github API provider, so no account information\nor network connection is required to run the test suite.\n\n## Enabling a repo\n\nVisit the repo's webhook settings page at\n`https://github.com/org/repo/settings/hooks`.\n\nCreate a new webhook, pointing at your highfive instance's location:\n\nPayload URL: `http://99.88.777.666/highfive/newpr.py`\nContent type: `application/x-www-form-urlencoded`\nLeave the 'secret' field blank.\nLet me select individual events: Issue Comment, Pull Request, Status\nCheck the box by 'Active'\n\nAdd the bot's github account as a Collaborator to the repo with Write access.\nIf automatically assigning a reviewer is desired for the repo, add a new section\nto the highfive instance's `collaborators.ini` with the list of desired reviewers:\n\n```\n[user/repo]\nreviewer_name =\nanother_reviewer_name =\n```\n\n## Configuring a Highfive\n\nCopy `config.sample` to `config`. Add the username of the account that will be\ncommenting as highfive. When logged into that account, visit\n`https://github.com/settings/tokens` and create a token with the `public_repo`\npermission.\n\nAdd that access token's value to the `token` field of the config.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fservo%2Fhighfive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fservo%2Fhighfive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fservo%2Fhighfive/lists"}