# gits-statuses
A CLI tool for scanning directories and displaying Git repository status information. This tool provides a comprehensive overview of all your Git repositories in a clean, tabular format.
Notes:
- Implements a single CLI utility that is:
- Distributed and downloaded via [PyPi](https://pypi.org/project/gits-statuses/)
- Used globally as a bona fide CLI utility
- Easy to install and use for the end user
- Compatible with any terminal
## Features
This scans your directories and displays:
**Standard View:**
- Repository name
- Current branch
- Commits ahead of remote
- Commits behind remote
- Changed files count
- Untracked files count
- Only shows repositories with changes (clean repos are hidden)
**Detailed View:**
- All columns from standard view
- Total commits count
- Status summary (e.g., "↑1 ~2 ?3" for 1 ahead, 2 changed, 3 untracked)
- Remote URL
- Shows ALL repositories (including clean ones)
**Enhanced Summary:**
- Total repositories found
- Repositories with changes
- Repositories ahead of remote
- Repositories behind remote
- Repositories with untracked files
## Installation
### Prerequisites
- [uv](https://docs.astral.sh/uv/)
### Install with uv (Recommended)
```bash
# Install gits-statuses
uv tool install gits-statuses
# Verify installation
gits-statuses --version
```
## Usage
### Basic Commands
```bash
# Basic usage - scan current directory
gits-statuses
# Detailed view with remote URLs and total commits
gits-statuses --detailed
# Scan a specific directory
gits-statuses --path /path/to/projects
# Show help
gits-statuses --help
```
### Examples
**Standard view (shows only repositories with changes):**
```
Repository | Branch | Ahead | Behind | Changed | Untracked
-------------------------------------------------------------
gits-statuses | main | 1 | | 1 | 1
my-project | dev | 2 | | 3 | 2
web-app | main | | 2 | 1 |
Summary:
Total repositories: 5
Repositories with changes: 3
Repositories ahead of remote: 2
Repositories behind remote: 1
Repositories with untracked files: 2
```
**Detailed view (shows all repositories):**
```
Repository | Branch | Ahead | Behind | Changed | Untracked | Total Commits | Status | Remote URL
---------------------------------------------------------------------------------------------------------------
api-service | main | | | | | 45 | Clean | https://github.com/user/api-service
gits-statuses | main | 1 | | 1 | 1 | 9 | ↑1 ~1 ?1 | https://github.com/nicolgit/gits-statuses
my-project | dev | 2 | | 3 | 2 | 67 | ↑2 ~3 ?2 | https://github.com/user/my-project
utils-lib | main | | | | | 23 | Clean | https://github.com/user/utils-lib
web-app | main | | 2 | 1 | | 102 | ↓2 ~1 | https://github.com/user/web-app
Summary:
Total repositories: 5
Repositories with changes: 3
Repositories ahead of remote: 2
Repositories behind remote: 1
Repositories with untracked files: 2
```
## Status Symbols
- **↑n**: n commits ahead of remote
- **↓n**: n commits behind remote
- **~n**: n changed files (modified/added/deleted)
- **?n**: n untracked files
- **Clean**: Repository has no pending changes
Examples:
- `↑2 ~1 ?3` = 2 commits ahead, 1 changed file, 3 untracked files
- `↓1 ~2` = 1 commit behind, 2 changed files
- `Clean` = No changes, fully synchronized
Raw data
{
"_id": null,
"home_page": null,
"name": "gits-statuses",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "git, repository, status, cli, scanner",
"author": "Nicola Delfino, Jairus Martinez",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/97/30/1ec42d57b1322e0bf469de03b6d9cdefff0451d3f6c47a3ccdd0e800a30d/gits_statuses-0.1.3.tar.gz",
"platform": null,
"description": "# gits-statuses\n\nA CLI tool for scanning directories and displaying Git repository status information. This tool provides a comprehensive overview of all your Git repositories in a clean, tabular format.\n\nNotes:\n- Implements a single CLI utility that is:\n - Distributed and downloaded via [PyPi](https://pypi.org/project/gits-statuses/)\n - Used globally as a bona fide CLI utility\n - Easy to install and use for the end user\n - Compatible with any terminal\n\n## Features\n\nThis scans your directories and displays:\n\n**Standard View:**\n- Repository name\n- Current branch\n- Commits ahead of remote\n- Commits behind remote \n- Changed files count\n- Untracked files count\n- Only shows repositories with changes (clean repos are hidden)\n\n**Detailed View:**\n- All columns from standard view\n- Total commits count\n- Status summary (e.g., \"\u21911 ~2 ?3\" for 1 ahead, 2 changed, 3 untracked)\n- Remote URL\n- Shows ALL repositories (including clean ones)\n\n**Enhanced Summary:**\n- Total repositories found\n- Repositories with changes\n- Repositories ahead of remote\n- Repositories behind remote\n- Repositories with untracked files\n\n## Installation\n\n### Prerequisites\n- [uv](https://docs.astral.sh/uv/)\n\n### Install with uv (Recommended)\n```bash\n# Install gits-statuses\nuv tool install gits-statuses\n\n# Verify installation\ngits-statuses --version\n```\n\n## Usage\n\n### Basic Commands\n\n```bash\n# Basic usage - scan current directory\ngits-statuses\n\n# Detailed view with remote URLs and total commits\ngits-statuses --detailed\n\n# Scan a specific directory\ngits-statuses --path /path/to/projects\n\n# Show help\ngits-statuses --help\n```\n\n### Examples\n\n**Standard view (shows only repositories with changes):**\n```\nRepository | Branch | Ahead | Behind | Changed | Untracked\n-------------------------------------------------------------\ngits-statuses | main | 1 | | 1 | 1 \nmy-project | dev | 2 | | 3 | 2 \nweb-app | main | | 2 | 1 | \n\nSummary:\n Total repositories: 5\n Repositories with changes: 3\n Repositories ahead of remote: 2\n Repositories behind remote: 1\n Repositories with untracked files: 2\n```\n\n**Detailed view (shows all repositories):**\n```\nRepository | Branch | Ahead | Behind | Changed | Untracked | Total Commits | Status | Remote URL \n---------------------------------------------------------------------------------------------------------------\napi-service | main | | | | | 45 | Clean | https://github.com/user/api-service\ngits-statuses | main | 1 | | 1 | 1 | 9 | \u21911 ~1 ?1 | https://github.com/nicolgit/gits-statuses\nmy-project | dev | 2 | | 3 | 2 | 67 | \u21912 ~3 ?2 | https://github.com/user/my-project\nutils-lib | main | | | | | 23 | Clean | https://github.com/user/utils-lib\nweb-app | main | | 2 | 1 | | 102 | \u21932 ~1 | https://github.com/user/web-app\n\nSummary:\n Total repositories: 5\n Repositories with changes: 3\n Repositories ahead of remote: 2\n Repositories behind remote: 1\n Repositories with untracked files: 2\n```\n\n## Status Symbols \n\n- **\u2191n**: n commits ahead of remote\n- **\u2193n**: n commits behind remote \n- **~n**: n changed files (modified/added/deleted)\n- **?n**: n untracked files\n- **Clean**: Repository has no pending changes\n\nExamples:\n- `\u21912 ~1 ?3` = 2 commits ahead, 1 changed file, 3 untracked files\n- `\u21931 ~2` = 1 commit behind, 2 changed files\n- `Clean` = No changes, fully synchronized\n",
"bugtrack_url": null,
"license": null,
"summary": "A CLI tool to scan directories for Git repositories and display their status information.",
"version": "0.1.3",
"project_urls": null,
"split_keywords": [
"git",
" repository",
" status",
" cli",
" scanner"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b48cc7e9d3d5392e1e61429d9ed01546e3ac1eada3509cb020445e902d3d43ef",
"md5": "4dd549e654145ebc9727986ed267eeb4",
"sha256": "91586e842cde27f5f9cc795a43ae0bd20d81676e09ad91a5ed09daf543e20e35"
},
"downloads": -1,
"filename": "gits_statuses-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4dd549e654145ebc9727986ed267eeb4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 9943,
"upload_time": "2025-07-19T15:49:21",
"upload_time_iso_8601": "2025-07-19T15:49:21.833568Z",
"url": "https://files.pythonhosted.org/packages/b4/8c/c7e9d3d5392e1e61429d9ed01546e3ac1eada3509cb020445e902d3d43ef/gits_statuses-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "97301ec42d57b1322e0bf469de03b6d9cdefff0451d3f6c47a3ccdd0e800a30d",
"md5": "62ca8266c7e21b1056002760a29a5980",
"sha256": "d8cf73ba2245150d0baae7260ac956f5f8645a2f66a985b4a48697749feac6d2"
},
"downloads": -1,
"filename": "gits_statuses-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "62ca8266c7e21b1056002760a29a5980",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 19095,
"upload_time": "2025-07-19T15:49:22",
"upload_time_iso_8601": "2025-07-19T15:49:22.557315Z",
"url": "https://files.pythonhosted.org/packages/97/30/1ec42d57b1322e0bf469de03b6d9cdefff0451d3f6c47a3ccdd0e800a30d/gits_statuses-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-19 15:49:22",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "gits-statuses"
}