A GitHub-style heatmap of commits and local repo statistics for your terminal
Project description
git-ember
A GitHub-style heatmap of commit activity for your terminal.
Overview
git-ember reads directly from your local Git repository history—no external APIs or network requests—and displays a colored contribution heatmap similar to what you see on GitHub profiles. It supports multiple color schemes, branch filtering, custom date ranges, repository statistics, branch tree visualizations, and hour-of-day activity heatmaps.
Prerequisites
- Python 3.11 or higher
- Git installed and available in PATH
Installation
From PyPI (recommended)
pip install git-ember
From source
-
Clone the repository:
git clone https://codeberg.org/lukavr05/git-ember.git cd git-ember
-
Install the package:
pip install -e .
-
Verify the installation:
git-ember --version
Using uv
If you use uv as your package manager:
uv pip install git-ember
Running without installation
If you prefer not to install the package, run directly:
PYTHONPATH=src python3 main.py /path/to/repo
Uninstall
pip uninstall git-ember
Configuration
git-ember reads configuration from ~/.config/git-ember/config.toml (or the platform-specific config directory). CLI arguments take precedence over config values.
| Variable | Required | Default | Description |
|---|---|---|---|
color |
No | green |
Color scheme name |
border |
No | = |
Border character |
week_start |
No | sunday |
Week start day (sunday/monday) |
ascii |
No | false |
Use ASCII characters |
scale |
No | auto |
Intensity scaling (auto/adaptive) |
extended |
No | false |
Show extended report by default |
compact |
No | false |
Show last 4 months only |
tree |
No | false |
Show branch tree by default |
years |
No | 1 |
Number of years to show |
recent_count |
No | 5 |
Number of recent commits to display |
Example config file
color = "blue"
border = "-"
week_start = "monday"
ascii = "true"
scale = "adaptive"
extended = "true"
compact = "true"
tree = "true"
years = 2
recent_count = 10
Usage
Show commit heatmap for the current year:
git-ember
Show heatmap for a specific repository:
git-ember /path/to/repo
Show multiple years:
git-ember --years 2
git-ember -y 3
Use different color schemes:
git-ember --color green # default
git-ember --color blue
git-ember --color orange
git-ember --color purple
git-ember --color mono
Show heatmap for a specific branch:
git-ember --branch feature-x
Display branch tree visualization:
git-ember --tree
git-ember --branch feature-x --tree
Show custom date range:
git-ember --after 2025-01-01 --before 2025-06-30
git-ember --after 2025-01-01
Show extended report with recent commits, top contributors, and statistics:
git-ember --extended
git-ember -e
Filter commits by author:
git-ember --author "John Doe"
git-ember -A "john@"
Exclude or include only merge commits:
git-ember --no-merges
git-ember --merges-only
Filter commits by message content:
git-ember --grep "bugfix"
git-ember --grep "feat"
Show hour-of-day activity heatmap:
git-ember --hourly
Strip ANSI color codes for piping or file export:
git-ember --plain
git-ember --plain > heatmap.txt
Reset configuration to defaults:
git-ember --reset-default
Show debug information:
git-ember --verbose
Command-line options
| Flag | Alias | Description | Default |
|---|---|---|---|
--color |
-c |
Color scheme | green |
--years |
-y |
Number of years to show (max 10) | 1 |
--border |
-b |
Border character | = |
--extended |
-e |
Show commits, contributors, stats | false |
--ascii |
-a |
Use ASCII characters instead of Unicode | false |
--plain |
-p |
Strip all ANSI color codes | false |
--compact |
- | Show last 4 months only | false |
--branch |
- | Show heatmap for specific branch | all branches |
--tree |
-t |
Show branch tree under heatmap | false |
--scale |
- | Intensity scaling: auto or adaptive | auto |
--after |
- | Show commits after date (YYYY-MM-DD) | - |
--before |
- | Show commits before date (YYYY-MM-DD) | - |
--week-start |
- | Week start: sunday or monday | sunday |
--author |
-A |
Filter commits by author | - |
--no-merges |
- | Exclude merge commits | false |
--merges-only |
- | Show only merge commits | false |
--grep |
- | Filter commits by message content | - |
--hourly |
- | Show hour-of-day x day-of-week heatmap | false |
--reset-default |
- | Reset config to defaults | - |
--version |
-V |
Show version | - |
--verbose |
-v |
Show debug information | - |
--help |
-h |
Show help | - |
Project Structure
git-ember/
├── main.py # CLI entry point (when running without install)
├── pyproject.toml # Package configuration
├── Makefile # Build targets (install, lint, test)
├── .python-version # Python version (3.11)
├── README.md # This file
├── LICENSE # MIT license
├── docs/
│ └── CHANGELOG.md # Version history
├── src/
│ └── gitember/
│ ├── __init__.py # Package version
│ ├── cli.py # CLI argument parsing and main logic
│ ├── git.py # Git subprocess calls and data parsing
│ ├── render.py # Heatmap and branch tree rendering
│ ├── colors.py # ANSI color scheme definitions
│ └── config.py # Config file load/save
└── tests/
├── conftest.py # Pytest fixtures for git repos
├── test_config.py # Config tests
├── test_git.py # Git operations tests
└── test_render.py # Rendering tests
Development
Run the linter:
make lint
Run tests:
pytest
Run tests with coverage:
pytest --cov=gitember --cov-report=term-missing
License
MIT License — see LICENSE file.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file git_ember-1.4.2.tar.gz.
File metadata
- Download URL: git_ember-1.4.2.tar.gz
- Upload date:
- Size: 26.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66fca9f0a9b6629edfe991a3947168df328b4f239cc7fde52d73271428a4b8d4
|
|
| MD5 |
fe282cef401db0d40251161aebfdc443
|
|
| BLAKE2b-256 |
cc67127328ed328b3523c00043e138a42303ac6edc7a1f17584af711891cf0f8
|
File details
Details for the file git_ember-1.4.2-py3-none-any.whl.
File metadata
- Download URL: git_ember-1.4.2-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75e84d031245adc0d98f916b5a553d6fcee5ee73a0affe34cdd7640c14a0fcab
|
|
| MD5 |
f647a97c27e1d535e7ca7ab562f3cf1e
|
|
| BLAKE2b-256 |
d8b3320743c2fb8de7669f60a7f26c13a5cb772bc0288503b7353e4dc7725d12
|