{"id":20196644,"url":"https://github.com/dbschenker/contribution-checker","last_synced_at":"2025-04-10T10:43:30.441Z","repository":{"id":189334468,"uuid":"390281184","full_name":"dbschenker/contribution-checker","owner":"dbschenker","description":"A tool to identify certain authors in repositories and analyze their commits. Helpful to check if and to which degree an organization's members have contributed to third-party projects.","archived":false,"fork":false,"pushed_at":"2024-07-10T09:31:05.000Z","size":227,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-10T00:41:28.840Z","etag":null,"topics":["compliance","contributions","git-analysis","open-source-management","ospo"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dbschenker.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2021-07-28T08:51:46.000Z","updated_at":"2024-12-21T09:10:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"f76f1c3a-187f-421a-8a70-7043caba469c","html_url":"https://github.com/dbschenker/contribution-checker","commit_stats":null,"previous_names":["dbschenker/contribution-checker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbschenker%2Fcontribution-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbschenker%2Fcontribution-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbschenker%2Fcontribution-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dbschenker%2Fcontribution-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dbschenker","download_url":"https://codeload.github.com/dbschenker/contribution-checker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248200224,"owners_count":21063853,"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":["compliance","contributions","git-analysis","open-source-management","ospo"],"created_at":"2024-11-14T04:25:10.132Z","updated_at":"2025-04-10T10:43:30.425Z","avatar_url":"https://github.com/dbschenker.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2023 DB Systel GmbH\n\nSPDX-License-Identifier: Apache-2.0\n--\u003e\n\n# Contribution Checker\n\n[![Test suites](https://github.com/dbschenker/contribution-checker/actions/workflows/test.yaml/badge.svg)](https://github.com/dbschenker/contribution-checker/actions/workflows/test.yaml)\n\u003c!-- TODO: Add REUSE API badge once public --\u003e\n\nCheck for all commits matching a certain email address pattern in a local or\nremote Git repository. Useful for creating statistics about contributions by a\ncertain organisation in selected projects.\n\n## Requirements\n\n* `python` \u003e= 3.9\n* `poetry` \u003e= 1.1.0\n\n## Usage\n\nWe recommend to run this tool via `poetry` that takes care of installing the\ncorrect dependencies in a clean encironment.\n\nYou can find all supported flags by running `poetry run contribution-checker --help`.\n\nBasic examples are:\n\n```bash\n# Check a remote repository for DB authors\npoetry run contribution-checker -e \".*@deutschebahn.com\" -r https://github.com/dbsystel/playground\n# Check a remote repository for DB authors and plot the results\npoetry run contribution-checker -e \".*@deutschebahn.com\" -r https://github.com/fsfe/reuse-tool --plot\n# Check a local repository for DB authors\npoetry run contribution-checker -e \".*@deutschebahn.com\" -d ../Git/dbsystel-playground\n```\n\nThe output is JSON and could look like the following:\n\n```json\n{\n  \"schema_version\": \"1.0\",\n  \"path\": \"https://github.com/fsfe/reuse-tool\",\n  \"commits_total\": 1860,\n  \"matched_total\": 12,\n  \"matched_newest\": [\n    \"2023-06-22T12:59:39\",\n    \"1 files, +7 lines, -2 lines\"\n  ],\n  \"matched_oldest\": [\n    \"2023-01-19T10:10:52\",\n    \"1 files, +3 lines, -0 lines\"\n  ],\n  \"matched_unique_authors\": 1,\n  \"matched_commit_data\": [\n    [\n      \"2023-06-22T12:59:39\",\n      \"1 files, +7 lines, -2 lines\"\n    ],\n    [\n      \"2023-06-22T09:45:24\",\n      \"5 files, +385 lines, -10 lines\"\n    ],\n    [\n      \"redacted to save space\",\n      \"...\"\n    ],\n  ]\n}\n```\n\n## License and copyright\n\nThe content of this repository is licensed under the [Apache 2.0\nlicense](https://www.apache.org/licenses/LICENSE-2.0).\n\nThis repository is [REUSE](https://reuse.software) compliant. You can find\nlicensing and copyright information for each file in the file header or\naccompying files.\n\nThe project has been started as a collaboration between DB Systel GmbH and DB\nSchenker. [We welcome contributions from everyone](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbschenker%2Fcontribution-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbschenker%2Fcontribution-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbschenker%2Fcontribution-checker/lists"}