{"id":50981023,"url":"https://github.com/tpetkovich/gh_forklist","last_synced_at":"2026-06-19T14:30:59.134Z","repository":{"id":358668131,"uuid":"1242438873","full_name":"tpetkovich/gh_forklist","owner":"tpetkovich","description":"Github CLI wrapper to list the forks of a target Github repository with commit divergence details saved to a .csv file.","archived":false,"fork":false,"pushed_at":"2026-05-18T12:51:14.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T14:39:47.760Z","etag":null,"topics":["forks","forks-insight","github","github-api","github-cli","github-forks","github-insights"],"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/tpetkovich.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-18T12:32:29.000Z","updated_at":"2026-05-18T12:51:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tpetkovich/gh_forklist","commit_stats":null,"previous_names":["tpetkovich/gh_forklist"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tpetkovich/gh_forklist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpetkovich%2Fgh_forklist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpetkovich%2Fgh_forklist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpetkovich%2Fgh_forklist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpetkovich%2Fgh_forklist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpetkovich","download_url":"https://codeload.github.com/tpetkovich/gh_forklist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpetkovich%2Fgh_forklist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34536272,"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":["forks","forks-insight","github","github-api","github-cli","github-forks","github-insights"],"created_at":"2026-06-19T14:30:54.917Z","updated_at":"2026-06-19T14:30:59.129Z","avatar_url":"https://github.com/tpetkovich.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gh_forklist.py\n\nA very simple python wrapper script to get the inclusive list of \"interesting\" forks (to a csv file) for a target repository and provide means to skim through forks which have commits and are ahead, behind or diverged from the target repository. The only dependency is [pandas](https://pandas.pydata.org/) for the .csv output.  \nIt does not do the API calls by itself, rather uses the [Github CLI](https://cli.github.com/), as this seemed to be the smoothest one, - assuming the user has that anyway set up - rather than fiddling around with the authentication, API keys and such.  \nThere are much more worked out tools than this, for example [Useful Forks](https://useful-forks.github.io/), but I just wanted to avoid messing around with API keys.\nAdditionally this script is slow and sucks, but due to Github REST API limited anyway and the Microsoft infrastructure constantly on the brink of collapse, I am not sure what else can be done. Additionally, the GraphQL based Github API does not have the required cross-repository compare object at all, although that would seem to be the logical way to provide this data.\n\nUsage with [uv](https://github.com/astral-sh/uv):\n\n```shell\nuv run gh_forklist.py {target_repo}\n```\n\nCLI usage help output:\n\n```shell\n❯ uv run gh_forklist.py -h\nusage: gh_forklist [-h] [-b BRANCH] [--include-identical] REPO\n\nSimple Github CLI wrapper to list the forks of a target Github repository with commit divergence details saved to a .csv file.\nRequires Github CLI executable `gh` in path with authentication set up.\n\npositional arguments:\n  REPO                 The target Github repository in owner/repo format\n\noptions:\n  -h, --help           show this help message and exit\n  -b BRANCH            The relevant branch of the target repository. If unspecified, uses the default one.\n  --include-identical  Include identical/unchanged forks in the list, which are by default discarded.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpetkovich%2Fgh_forklist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpetkovich%2Fgh_forklist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpetkovich%2Fgh_forklist/lists"}