Metadata-Version: 2.3
Name: gitdirector
Version: 0.1.6
Summary: A Python CLI tool for managing and synchronizing multiple git repositories with ease
Keywords: git,repository,manager,cli,synchronization,batch
Author: Anito Anto
Author-email: Anito Anto <49053859+anitoanto@users.noreply.github.com>
License: MIT
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Version Control :: Git
Requires-Dist: pyyaml>=6.0
Requires-Dist: click>=8.1.0
Requires-Dist: rich>=12.0
Requires-Dist: pytest>=7.0 ; extra == 'dev'
Requires-Dist: pytest-cov>=4.0 ; extra == 'dev'
Requires-Dist: black>=23.0 ; extra == 'dev'
Requires-Dist: ruff>=0.1.0 ; extra == 'dev'
Requires-Dist: mypy>=1.0 ; extra == 'dev'
Requires-Dist: build>=1.0 ; extra == 'dev'
Requires-Dist: twine>=4.0 ; extra == 'dev'
Maintainer: Anito Anto
Maintainer-email: Anito Anto <49053859+anitoanto@users.noreply.github.com>
Requires-Python: >=3.9
Project-URL: Homepage, https://github.com/anitoanto/gitdirector
Project-URL: Repository, https://github.com/anitoanto/gitdirector.git
Project-URL: Issues, https://github.com/anitoanto/gitdirector/issues
Project-URL: Documentation, https://github.com/anitoanto/gitdirector/blob/main/README.md
Provides-Extra: dev
Description-Content-Type: text/markdown

# GitDirector

A Python CLI tool for managing and synchronizing multiple git repositories.

## Installation

```bash
pip install gitdirector
```

## Usage

```
gitdirector add PATH [--discover]          Add a repository or discover all under a path
gitdirector remove PATH|NAME [--discover]  Remove a repository by path, name, or all under a path
gitdirector list                           List all tracked repositories with live status
gitdirector status                         Show dirty repositories with staged/unstaged files
gitdirector pull                           Pull latest changes for all tracked repositories
gitdirector help                           Show help
```

### add

```bash
gitdirector add /path/to/repo
gitdirector add /path/to/folder --discover   # recursively find and add all repos
```

### remove

```bash
gitdirector remove /path/to/repo         # remove by full path
gitdirector remove my-repo               # remove by repository name
gitdirector remove /path/to/folder --discover  # remove all repos under a path
```

If multiple tracked repositories share the same name, `gitdirector` will refuse and list the conflicting paths so you can use the full path instead.

### list

Displays a live table of all tracked repositories with:

- Sync state: `up to date`, `ahead`, `behind`, `diverged`, or `unknown`
- Current branch
- Staged/unstaged changes
- Last commit (relative time)
- Tracked file size
- Path

Checks run concurrently (default: 10 workers).

### status

Shows repositories with uncommitted changes (staged and/or unstaged files). Prints a summary of total, clean, and changed repo counts.

### pull

Pulls all tracked repositories concurrently using fast-forward only (`git pull --ff-only`). Reports success or failure per repository.

## Configuration

Config is stored at `~/.gitdirector/config.yaml`.

```yaml
repositories:
  - /path/to/repo1
  - /path/to/repo2
max_workers: 10   # optional, default 10
```

## Requirements

- Python 3.9+
- Git

## License

MIT
