Skip to main content

git-ember

PyPI License: MIT

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

  1. Clone the repository:

    git clone https://codeberg.org/lukavr05/git-ember.git
    cd git-ember
    
  2. Install the package:

    pip install -e .
    
  3. 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.

Metadata

Release files for git-ember 1.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for git-ember 1.4.2
File Size Uploaded
git_ember-1.4.2.tar.gz 26.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for git-ember 1.4.2
File Interpreter ABI Platform
git_ember-1.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 46.6 kB

Release files / git_ember-1.4.2.tar.gz

Download URL git_ember-1.4.2.tar.gz
Size 26.8 kB
Tags Source
SHA-256 checksum
How to use checksums
66fca9f0a9b6629edfe991a3947168df328b4f239cc7fde52d73271428a4b8d4
BLAKE2b-256 checksum
How to use checksums
cc67127328ed328b3523c00043e138a42303ac6edc7a1f17584af711891cf0f8
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / git_ember-1.4.2-py3-none-any.whl

Download URL git_ember-1.4.2-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75e84d031245adc0d98f916b5a553d6fcee5ee73a0affe34cdd7640c14a0fcab
BLAKE2b-256 checksum
How to use checksums
d8b3320743c2fb8de7669f60a7f26c13a5cb772bc0288503b7353e4dc7725d12
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

1.4.2 This release

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page