{"id":20619373,"url":"https://github.com/containerscrew/gitrack","last_synced_at":"2025-10-04T15:37:59.759Z","repository":{"id":253257262,"uuid":"842898178","full_name":"containerscrew/gitrack","owner":"containerscrew","description":"Scan local git repositories","archived":false,"fork":false,"pushed_at":"2024-12-16T21:04:08.000Z","size":1761,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T05:16:18.683Z","etag":null,"topics":["cargo","git","git-repository","git-tracker","rust","rust-project"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containerscrew.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-08-15T10:44:10.000Z","updated_at":"2024-12-04T22:37:37.000Z","dependencies_parsed_at":"2024-08-15T15:23:41.035Z","dependency_job_id":"fddc96df-4d9b-44eb-b721-03c42081ef28","html_url":"https://github.com/containerscrew/gitrack","commit_stats":null,"previous_names":["containerscrew/gitrack"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerscrew%2Fgitrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerscrew%2Fgitrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerscrew%2Fgitrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerscrew%2Fgitrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containerscrew","download_url":"https://codeload.github.com/containerscrew/gitrack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234314458,"owners_count":18812697,"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":["cargo","git","git-repository","git-tracker","rust","rust-project"],"created_at":"2024-11-16T12:11:29.649Z","updated_at":"2025-10-04T15:37:54.720Z","avatar_url":"https://github.com/containerscrew.png","language":"Rust","readme":"# gitrack\n\n\n\u003c!-- START OF TOC !DO NOT EDIT THIS CONTENT MANUALLY--\u003e\n**Table of Contents**  *generated with [mtoc](https://github.com/containerscrew/mtoc)*\n- [gitrack](#gitrack)\n- [About](#about)\n- [Badges](#badges)\n- [Supported Platforms](#supported-platforms)\n- [Installation](#installation)\n  - [Install latest version](#install-latest-version)\n  - [Install specific release](#install-specific-release)\n- [Uninstall](#uninstall)\n- [Usage](#usage)\n  - [Help](#help)\n  - [Scan folders containing git repositories](#scan-folders-containing-git-repositories)\n  - [Scanning for untracked changes (summarized)](#scanning-for-untracked-changes-summarized)\n  - [Scanning for untracked changes (verbose)](#scanning-for-untracked-changes-verbose)\n  - [Diff files for untracked changes](#diff-files-for-untracked-changes)\n  - [Control number of workers/threads](#control-number-of-workersthreads)\n  - [Exclude directories](#exclude-directories)\n  - [Pulling changes](#pulling-changes)\n- [About threads](#about-threads)\n- [Dev](#dev)\n  - [pre-commit](#pre-commit)\n  - [Local container](#local-container)\n- [Examples](#examples)\n  - [Scan folder containing git repositories](#scan-folder-containing-git-repositories)\n  - [Scan untracked repositories](#scan-untracked-repositories)\n  - [Scan untracked repositories with verbose](#scan-untracked-repositories-with-verbose)\n  - [Diff files](#diff-files)\n  - [Exclude directories](#exclude-directories)\n- [TODO](#todo)\n- [License](#license)\n\u003c!-- END OF TOC --\u003e\n\n# About\n\nScan git repositories in your file system. Find untracked changes, diff files, and more.\n\nEasy and simple. This tool was created just for fun and to practice Rust.\n\nImplemented features:\n\n* Scan for untracked changes in git repositories.\n* Scan `.git` folders in your file system (with multithreads).\n* Diff files for untracked changes.\n\n\n# Badges\n\n|              |                                                                                                                                                                                                                                                    |\n|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Language     | ![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=for-the-badge\u0026logo=rust\u0026logoColor=white)                                                                                                                                             |\n| Release      | [![Release](https://img.shields.io/github/release/containerscrew/gitrack)](https://github.com/containerscrew/gitrack/releases/latest)                                                                                                              |\n| Code         | ![Code Size](https://img.shields.io/github/languages/code-size/containerscrew/gitrack)                                                                                                                                                             |\n| CI - Build   | [![Build](https://github.com/containerscrew/gitrack/actions/workflows/build.yml/badge.svg)](https://github.com/containerscrew/gitrack/actions/workflows/build.yml)                                                                                 |\n| CI - Release | [![Build](https://github.com/containerscrew/gitrack/actions/workflows/release.yml/badge.svg)](https://github.com/containerscrew/gitrack/actions/workflows/release.yml)                                                                             |\n| CI - Test    | [![Build](https://github.com/containerscrew/gitrack/actions/workflows/test.yml/badge.svg)](https://github.com/containerscrew/gitrack/actions/workflows/test.yml)                                                                                   |\n| Meta         | [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit) [![License - MIT](https://img.shields.io/github/license/containerscrew/gitrack)](/LICENSE) |\n| Codecov      | [![Codecov](https://codecov.io/gh/containerscrew/gitrack/graph/badge.svg?token=4AI2U4PX4V)](https://codecov.io/gh/containerscrew/gitrack)                                                                                                          |\n| Downloads    | [![Downloads](https://img.shields.io/github/downloads/containerscrew/gitrack/total.svg?logo=github)](https://somsubhra.github.io/github-release-stats/?username=containerscrew\u0026repository=gitrack)                                                 |\n\n# Supported Platforms\n\n| Arch   | ARM64 | AMD64 |\n|--------|-------|-------|\n| darwin | ✅     | ✅   |\n| linux  | ✅     | ✅   |\n\n# Installation\n\n## Install latest version\n\n```shell\n$ cargo install gitrack\n```\n\nOr the binary:\n\n```shell\n$ curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/gitrack/main/install.sh | sh\n```\n\n## Install specific release\n\n```shell\ncargo install gitrack@2.0.0\n```\n\n```shell\n$ curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/gitrack/main/install.sh | sh -s -- -v \"v0.8.0\"\n```\n\n# Uninstall\n\n```bash\nsudo rm /usr/local/bin/gitrack\n```\n\nIf you installed the cli using cargo:\n\n```shell\ncargo uninstall gitrack\n```\n\n# Usage\n\n## Help\n\n```bash\ngitrack --help\n\nScan git repositories in your file system\n\nUsage: gitrack [OPTIONS]\n\nOptions:\n  -p, --path \u003cPATH\u003e               Folder path you want to scan for git untracked files [default: /home/dcr]\n  -w, --workers \u003cWORKERS\u003e         Number of threads to use for scanning repositories [default: 5]\n  -d, --diff                      Show differences between changed files\n  -e, --exclude-dir \u003cEXCLUDE\u003e...  Exclude directories to scan\n  -u, --check-untracked           Only show repositories with untracked files\n  -v, --verbose                   Print verbose output\n  -h, --help                      Print help\n  -V, --version                   Print version\n```\n\n## Scan folders containing git repositories\n\n```bash\ngitrack -p /home/elliot # home will be always the default values if -p is not provided\n```\n\n## Scanning for untracked changes (summarized)\n\n```bash\ngitrack -p /home/elliot -u\n```\n\n## Scanning for untracked changes (verbose)\n\n```bash\ngitrack -p /home/elliot -u -v\n```\n\n## Diff files for untracked changes\n\n```bash\ngitrack -p /home/elliot -u -d # without -u, -d will not work\n```\n\n## Control number of workers/threads\n\n```bash\ngitrack -p /home/elliot -u -w 6\n```\n\n## Exclude directories\n\n```bash\ngitrack -p /home/elliot -e .terragrunt-cache/ -e .terraform/ -u -w 6\n```\n\n## Pulling changes\n\nRun a `git pull` to update local code from remote repositories:\n\n```shell\ngitrack -p /home/elliot/Documents/Code/ -e .terragrunt-cache/ -e .terraform/ --pull\n```\n\n# About threads\n\n\u003e The use of threads is not really necessary in this type of tools, unless you have a very large file/folder system. Adding threads does not mean always better performance. I have included them in order to practice their use.\n\n# Dev\n\n## pre-commit\n\n```bash\ncd gitrack/\npre-commit install\n```\n\n## Local container\n\n```bash\ncd gitrack/\ndocker run -it --rm -w /app -h gitrack --name gitrack -v $PWD:/app docker.io/rust:1.80.1-slim-bullseye\n```\n\n# Examples\n\n## Scan folder containing git repositories\n\n![example1](img/example1.png)\n\n## Scan untracked repositories\n\n![example2](img/example2.png)\n\n## Scan untracked repositories with verbose\n\n![example3](img/example3.png)\n\n## Diff files\n\n![example4](img/example4.png)\n\n## Exclude directories\n\n![example5](img/example5.png)\n\n# TODO\n\n* Implement git commit scan for sensitive data using regex. Just for fun. Like gitleaks does.\n\n\n# License\n\n[License](./LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainerscrew%2Fgitrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainerscrew%2Fgitrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainerscrew%2Fgitrack/lists"}