{"id":20417821,"url":"https://github.com/javier-games/pip-git-toolbox","last_synced_at":"2026-05-06T04:07:53.447Z","repository":{"id":251588889,"uuid":"837520878","full_name":"javier-games/pip-git-toolbox","owner":"javier-games","description":"Handy git tool set to help you optimize repos by pruning unused files, keep your contribution graph up to date and more.","archived":false,"fork":false,"pushed_at":"2024-11-08T10:45:18.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T03:46:15.260Z","etag":null,"topics":["git","git-contributions","github"],"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/javier-games.png","metadata":{"files":{"readme":"README.md","changelog":"history-builder.py","contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-08-03T08:11:48.000Z","updated_at":"2024-11-10T01:53:23.000Z","dependencies_parsed_at":"2024-08-14T06:54:05.881Z","dependency_job_id":"37d56f70-72bf-4890-967d-cc27c463cb5d","html_url":"https://github.com/javier-games/pip-git-toolbox","commit_stats":null,"previous_names":["javier-games/git-commitment-recover","javier-games/pip-git-toolbox"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/javier-games/pip-git-toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javier-games%2Fpip-git-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javier-games%2Fpip-git-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javier-games%2Fpip-git-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javier-games%2Fpip-git-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javier-games","download_url":"https://codeload.github.com/javier-games/pip-git-toolbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javier-games%2Fpip-git-toolbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32677963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["git","git-contributions","github"],"created_at":"2024-11-15T06:27:47.731Z","updated_at":"2026-05-06T04:07:53.412Z","avatar_url":"https://github.com/javier-games.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Git Toolbox\n\n## Prune Files\n\nThis script automates the cleanup of unused or deleted files from a Git repository. It identifies files that have been deleted throughout the repository’s history and removes them to reduce the repository size. The script also runs Git garbage collection to optimize repository performance. Here’s a breakdown of its main functionality:\n\n## Commitment Recovery\n\nThe script effectively replicates the commit history from one repository to another, filtering commits based on the \nauthor's email and optionally hiding commit messages. It's useful for keep your Contribution Graph up to date with the \nchanges made in another private repository without compromising information.\n\n## Time Displacement\n\nThis script  is designed to create a new Git repository by replaying the commit history from an existing source \nrepository. It adjusts the commit timestamps to align with a specified start date while preserving the relative \ndifferences in days between commits.\n\n## History Builder\n\nTakes from the source path the files and creates a new repository commiting them in by their last modification date.\n\n## Requirements\n\n### Python\n\nPython 3.x is required since the script uses syntax and libraries compatible with Python 3.\nEnsure that gitpython and other standard libraries (os, sys, argparse, subprocess, datetime) are available. \nIt can be installed via pip:\n\n```shell\npip install gitpython\n```\n\n### Git\n\nGit must be installed and accessible from the command line since the script uses Git commands through\nsubprocess and interacts with Git repositories via the gitpython library.\n\nMake sure the git global confing file has the name and email assigned.\n\n```shell\ngit config --global user.name \"Full Name\"\n```\n\n```shell\ngit config --global user.email \"email@address.com\"\n```\n\n## Usage\n\nThe script accepts several command-line arguments:\n\n### Commitment Recovery\n\n- `-s`/`--source`: The path to the source Git repository (required).\n- `-t`/`--target`: The path where the target repository will be created (optional).\n- `-ef`/`--email_filter`: An email filter to select commits by the author's email (optional).\n- `-hm`/`--hide_message`: A flag to hide the commit messages in the target repository (optional).\n\n```shell\npython commitment-recovery.py --source \\path\\to\\repository\\directory --email_filter email@address.com --hide_message\n```\n\n### Time Displacement\n\n- `-s`/`--source`: The path to the source Git repository (required).\n- `-d`/`--date`: New starting date to rewrite the given repository (required).\n- `-t`/`--target`: The path where the target repository will be created (optional).\n- `-b`/`--branch`: Specifies which branch to use to recreate the history.\n\n```shell\npython time-displacement.py --source \\path\\to\\repository\\directory --date YYYY/MM/DD\n```\n\n#### Limitations\nSince construct the new history by coping and removing files from the source to avoid merge conflict resolutions,\nthe bigger the repository the longest it takes to complete.\n\n## License\nGit Commitment Recover is available under the MIT license. See the [LICENSE](LICENSE.md) file for more info.\n\n## Contribution\n\nAll pull requests are accepted:\n- Fork the repo and create your branch from develop.\n- If you've added code that should be tested, add tests.\n- Make sure your code lints.\n- Submit a pull request!\n\n## Support\n\nFor any questions or issues, please open a new issue on this repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavier-games%2Fpip-git-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavier-games%2Fpip-git-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavier-games%2Fpip-git-toolbox/lists"}