{"id":17826378,"url":"https://github.com/arsham/git-hotspots","last_synced_at":"2025-10-12T08:05:40.158Z","repository":{"id":156441122,"uuid":"590214865","full_name":"arsham/git-hotspots","owner":"arsham","description":"WIP","archived":false,"fork":false,"pushed_at":"2024-05-16T21:42:17.000Z","size":79,"stargazers_count":5,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-29T05:20:26.711Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/arsham.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":"2023-01-17T22:33:14.000Z","updated_at":"2025-04-01T16:26:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"d0cb2d86-cebd-4117-a280-aa6fe74cfea2","html_url":"https://github.com/arsham/git-hotspots","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/arsham/git-hotspots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsham%2Fgit-hotspots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsham%2Fgit-hotspots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsham%2Fgit-hotspots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsham%2Fgit-hotspots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arsham","download_url":"https://codeload.github.com/arsham/git-hotspots/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arsham%2Fgit-hotspots/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010795,"owners_count":26084807,"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","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"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":[],"created_at":"2024-10-27T18:45:01.043Z","updated_at":"2025-10-12T08:05:40.115Z","avatar_url":"https://github.com/arsham.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git Hotspots\n\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/arsham/git-hotspots/integration.yml?logo=github)](https://github.com/arsham/git-hotspots/actions/workflows/integration.yml)\n[![Crates.io](https://img.shields.io/crates/v/git-hotspots?color=green\u0026logo=rust\u0026logoColor=orange)](https://crates.io/crates/git-hotspots)\n[![License](https://img.shields.io/github/license/arsham/git-hotspots)](https://github.com/arsham/git-hotspots/blob/master/LICENSE)\n\nThis tool helps with identifying functions that have had a lot of changes in\nthe `git` history. It does this by parsing the files that are supported by the\nprogram and then using the git history to count how many times each function\nhas been changed.\n\nPlease note that this tool is still in its early stages, and there are a lot of\nthings to improve. If you have any suggestions, please open an issue.\n\n1. [Why is this helpful](#why-is-this-helpful)\n2. [Installation](#installation)\n3. [Usage](#usage)\n4. [Supported Languages](#supported-languages)\n5. [License](#license)\n\n## Why is this helpful\n\nAs you work on your project, the more you change a function, the more likely it\nis that you will work on it again. If this particular function is changed too\noften, it might be a sign that the function requires more attention and can\ncontribute to technical debt.\n\nWith this tool you can identify functions that are too big or complex and are\nbeing refactored a lot, or are refactored a lot in relation to another part of\nthe program.\n\nAdditionally when you want to make a decision on how to refactor your code, you\ncan use this to find out which functions are the most changed and start with\nthose. This can help you to make a more informed decision on how to refactor\nyour code.\n\n## Installation\n\nTo install:\n\n```bash\ncargo install git-hotspots\n```\n\nAssuming the binary path is in the your `PATH`, `git` automatically picks this\nup as a subcommand.\n\n## Usage\n\nTo view top 50 functions with the most changes in git history:\n\n```bash\ngit hotspots\n```\n\nYou can control how the tool operates by passing the following flags:\n\n- `--total`, `-t`: Total number of results. Default: 50\n- `--skip`, `-s`: Skip first n results. Default: 0\n- `--log-level`, `-V`: Log level. Try -VV for more logs!\n- `--prefix`, `-p`: Show results beginning with the given string.\n- `--invert-match`, `-v`: Exclude partially matched path.\n- `--exclude-func`, `-F`: Exclude function by partial match.\n- `--root`, `-r`: Root of the project to inspect. Default: .\n\n## Supported Languages\n\nCurrently the following languages are supported:\n\n- Rust\n- Go\n- Lua\n\nHowever, it is easy to add support for other languages. Just create an issue\nfor the language you want to be supported, and I'll add it to the list.\n\n## License\n\nLicensed under the MIT License. Check the [LICENSE](./LICENSE) file for details.\n\n\u003c!--\nvim: foldlevel=1\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsham%2Fgit-hotspots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farsham%2Fgit-hotspots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farsham%2Fgit-hotspots/lists"}