{"id":30104776,"url":"https://github.com/mthh/external-issue-checker","last_synced_at":"2026-06-19T06:32:53.880Z","repository":{"id":298749032,"uuid":"1000974188","full_name":"mthh/external-issue-checker","owner":"mthh","description":"List commits in a Git repository that refer to external issues / pull requests and report their status.","archived":false,"fork":false,"pushed_at":"2025-07-23T17:17:22.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-24T19:37:42.381Z","etag":null,"topics":["cli","cross-reference","git","issues","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/mthh.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,"zenodo":null}},"created_at":"2025-06-12T15:56:21.000Z","updated_at":"2025-07-23T17:16:50.000Z","dependencies_parsed_at":"2025-06-12T17:38:18.862Z","dependency_job_id":"50733218-8f29-4053-bd60-062246d684ce","html_url":"https://github.com/mthh/external-issue-checker","commit_stats":null,"previous_names":["mthh/external-issue-checker"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mthh/external-issue-checker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mthh%2Fexternal-issue-checker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mthh%2Fexternal-issue-checker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mthh%2Fexternal-issue-checker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mthh%2Fexternal-issue-checker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mthh","download_url":"https://codeload.github.com/mthh/external-issue-checker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mthh%2Fexternal-issue-checker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34520431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","cross-reference","git","issues","python"],"created_at":"2025-08-09T23:13:14.181Z","updated_at":"2026-06-19T06:32:53.856Z","avatar_url":"https://github.com/mthh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# external-issue-checker\n\n[![License MIT](https://img.shields.io/badge/Licence-MIT-green)](./LICENSE)\n[![Project Status: Active](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![tests](https://github.com/mthh/external-issue-checker/actions/workflows/ci-tests.yml/badge.svg)](https://github.com/mthh/external-issue-checker/actions/workflows/ci-tests.yml)\n[![Python Version](https://img.shields.io/pypi/pyversions/external-issue-checker.svg)](https://pypi.org/project/external-issue-checker/)\n[![PyPI](https://img.shields.io/pypi/v/external-issue-checker.svg)](https://pypi.org/project/external-issue-checker/)\n\n**Lists commits in a Git repository that refer to external issues / pull requests and reports their status.**\n\nThis tool is useful for tracking issues and pull requests (that are not managed within\nthe repository itself and for which a workaround may have been implemented in the\ncodebase) and reporting their status (*open* or *closed*).\n\nFor example sometimes you refer to an issue of another package in a commit\n(e.g. *“Apply some workaround while waiting for https://github.com/orga/repository/issues/12 to be fixed”*).\nIn the meantime, maybe the issue has been resolved (and maybe you've redone a commit\nlike *\"Remove the workaround now that https://github.com/orga/repository/issues/12 is fixed\"*, or not).\n\nIt's time to check with `external-issue-checker`!\n\nCurrently, it supports GitHub and GitLab issues and pull (or merge) requests, but it\nmight be extended to support other platforms (such as Bitbucket, Codeberg, etc.) in\nthe future.\n\n## Demo\n\n![Demo showing terminal being recorded](./misc/demo.svg)\n\n## Usage instructions\n\nTo use the tool, you need to have Python 3.10 or later installed on your system.\n\nOne of the easiest ways to install and run global Python CLI tools is either to use:\n\n- [`pipx`](https://github.com/pypa/pipx)\n\n```bash\n# Install external-issue-checker globally\npipx install external-issue-checker\n\n# Run the CLI tool\nexternal-issue-checker --help\n```\n\n- or [`uv`](https://github.com/astral-sh/uv?tab=readme-ov-file#tools)\n\n```bash\n# Install external-issue-checker globally if you don't have it yet\n# and run the CLI tool (uvx is an alias for uv tool run)\nuvx external-issue-checker --help\n```\n\nOtherwise, you can install it in a virtual environment using either:\n\n- `pip`\n\n```bash\nmkdir some-directory\ncd some-directory\npython3 -m venv .venv\nsource .venv/bin/activate  # On Windows use `.venv\\Scripts\\activate`\npip install external-issue-checker\n\nexternal-issue-checker --help\n```\n\n- or [`poetry`](https://python-poetry.org/)\n\n```bash\npoetry new --src some-directory\ncd some-directory\npoetry add external-issue-checker\n\npoetry run external-issue-checker --help\n```\n\n## Instructions for developers\n\nClone the repository:\n\n```bash\ngit clone https://github.com/mthh/external-issue-checker\ncd external-issue-checker\n```\n\nInstall the dependencies:\n\n```bash\npoetry install\n```\n\nActivate the virtual environment:\n\n```bash\npoetry env activate\n```\n\nRun the test suite:\n\n```bash\npoetry run pytest\n```\n\nInstall pre-commit hooks:\n\n```bash\npoetry run pre-commit install\n```\n\nRun the CLI tool:\n\n```bash\npoetry run external-issue-checker --help\n```\n\n## Motivation\n\nThis tool was created to help developers keep track of external issues and pull requests\nthat may affect their codebase. It allows you to quickly identify commits that reference\nexternal issues, making it easier to manage dependencies and workarounds.\n\nFrom a personal point of view, this is an opportunity to:\n\n- play with [`poetry`](https://python-poetry.org/) to stay up to date with how it works and how to store project metadata in the `pyproject.toml` file,\n- see how great [`rich`](https://github.com/Textualize/rich) and [`typer`](https://github.com/fastapi/typer) are for creating CLI tools.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmthh%2Fexternal-issue-checker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmthh%2Fexternal-issue-checker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmthh%2Fexternal-issue-checker/lists"}