7000pctAUTO 5e2119a73b
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
Re-push project files to trigger CI re-run (previous CI failure was transient Gitea API error)
2026-02-01 08:26:33 +00:00
2026-02-01 08:21:34 +00:00
2026-02-01 07:59:10 +00:00

Git Insights CLI

A powerful CLI tool that analyzes git repositories to generate developer productivity insights, code quality metrics, and commit pattern analysis. Works entirely offline using local git data with no external API dependencies.

CI Status Python Version License

Features

  • Commit Pattern Analysis - Analyze commit frequency, time patterns, and author contributions
  • Code Churn Tracking - Track lines added/removed per commit and identify high churn areas
  • Productivity Metrics Dashboard - Display metrics in a formatted terminal dashboard using Rich
  • Risky Commit Detection - Identify commits with large changes, merge commits, and revert commits
  • Team Velocity Reports - Calculate commit velocity and throughput over time periods
  • Export to Multiple Formats - Export analysis results to JSON, HTML, and Markdown formats

Installation

From Source

pip install -e .

Dependencies

  • Python 3.8+
  • Click 8.1.7+
  • Rich 13.7.0+
  • GitPython 3.1.40+
  • dataclasses-json 0.6.4+
  • PyYAML 6.0.1+
  • Jinja2 3.1.3+

Quick Start

# Analyze current repository (last 30 days)
git-insights analyze

# Analyze specific repository
git-insights analyze /path/to/repo

# Show productivity dashboard
git-insights dashboard

# Export to JSON
git-insights export --format json

# Analyze last 7 days
git-insights analyze --days 7

Commands

analyze

Analyze a git repository for commit patterns, code churn, and productivity metrics.

git-insights analyze [OPTIONS] [PATH]

Options:
  --days INTEGER     Number of days to analyze (default: 30)
  --format TEXT      Output format: json, markdown, html (default: console)
  -v, --verbose      Enable verbose output

Example:

git-insights analyze /my/project --days 7 --format json

dashboard

Display productivity metrics in an interactive terminal dashboard.

git-insights dashboard [OPTIONS] [PATH]

Options:
  --days INTEGER     Number of days to analyze (default: 30)

Example:

git-insights dashboard /my/project

export

Export analysis results to a file in the specified format.

git-insights export [OPTIONS] [PATH]

Options:
  --days INTEGER     Number of days to analyze (default: 30)
  --format TEXT      Output format: json, markdown, html (default: json)
  --output FILE      Output file path (default: stdout)

Example:

git-insights export /my/project --format markdown --output report.md

report

Generate a comprehensive productivity report.

git-insights report [OPTIONS] [PATH]

Options:
  --days INTEGER     Number of days to analyze (default: 30)
  --output FILE      Output file path

Example:

git-insights report /my/project --output report.html

Configuration

Create a .git-insights/config.yaml file in your project root or home directory:

repository_path: "."
analysis_days: 30
output_format: "json"
churn_threshold: 500
risky_commit_threshold: 500
merge_commit_flag: true

Environment Variables

Variable Default Description
GIT_INSIGHTS_REPO_PATH "." Repository path to analyze
GIT_INSIGHTS_DAYS "30" Default analysis period in days
GIT_INSIGHTS_OUTPUT_FORMAT "json" Default output format

Output Formats

Console Dashboard

The default console output uses Rich library to display colorful, formatted metrics directly in your terminal:

╔════════════════════════════════════════════════════════════╗
║          Git Insights - Productivity Dashboard              ║
╠════════════════════════════════════════════════════════════╣
║  Total Commits: 147    │  Authors: 5                       ║
║  Lines Added: 12,453   │  Lines Deleted: 4,231             ║
╚════════════════════════════════════════════════════════════╝

JSON

{
  "summary": {
    "total_commits": 147,
    "authors": 5,
    "lines_added": 12453,
    "lines_deleted": 4231
  },
  "commit_patterns": {...},
  "code_churn": {...}
}

Markdown

# Git Insights Report

## Summary

| Metric | Value |
|--------|-------|
| Total Commits | 147 |
| Authors | 5 |

HTML

Generates a self-contained HTML report with interactive charts and tables.

Development

Setup

# Clone the repository
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/git-insights-cli.git
cd git-insights-cli

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/ -v --cov=src

# Run linting
ruff check src/ tests/

Project Structure

git-insights-cli/
├── src/
│   ├── __init__.py          # Package marker with version
│   ├── cli.py               # CLI commands and entry point
│   ├── git_insights.py      # Main orchestrator class
│   ├── analyzers/
│   │   ├── __init__.py
│   │   ├── git_repository.py     # Git repository wrapper
│   │   ├── commit_pattern.py     # Commit pattern analysis
│   │   ├── code_churn.py         # Code churn tracking
│   │   ├── risky_commit.py       # Risky commit detection
│   │   └── velocity.py           # Velocity analysis
│   ├── formatters/
│   │   ├── __init__.py
│   │   ├── base.py               # Base formatter abstract class
│   │   ├── json_formatter.py     # JSON output
│   │   ├── markdown_formatter.py # Markdown output
│   │   ├── html_formatter.py     # HTML output
│   │   └── dashboard.py          # Rich console dashboard
│   ├── models/
│   │   ├── __init__.py
│   │   └── data_structures.py    # Dataclass models
│   └── utils/
│       ├── __init__.py
│       ├── date_utils.py         # Date/time utilities
│       └── config.py             # Configuration loader
├── tests/
│   ├── __init__.py
│   ├── conftest.py              # Pytest fixtures
│   ├── test_cli.py              # CLI tests
│   ├── test_models.py           # Model tests
│   ├── test_analyzers.py        # Analyzer tests
│   └── test_formatters.py       # Formatter tests
├── .git-insights/
│   └── config.yaml              # Default configuration
├── .gitea/
│   └── workflows/
│       └── ci.yml               # Gitea Actions CI workflow
├── requirements.txt             # Dependencies
├── setup.py                     # Package setup
├── pyproject.toml              # Project configuration
├── .gitignore                  # Git ignore patterns
├── .pre-commit-config.yaml     # Pre-commit hooks
└── README.md                   # This file

Running Tests

# Run all tests
pytest tests/ -v

# Run with coverage
pytest tests/ -v --cov=src --cov-report=term-missing

# Run specific test file
pytest tests/test_cli.py -v

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Description
A CLI tool that analyzes git repositories to generate developer productivity insights, code quality metrics, and commit pattern analysis
Readme MIT 259 KiB
v1.0.0 Latest
2026-01-30 20:35:48 +00:00
Languages
Python 100%