Skip to main content

Automatically reorganize messy git commit histories into clean, semantic commits

Project description

Git Smart Squash

Automatically reorganize messy git commit histories into clean, semantic commits suitable for pull request reviews.

Overview

Git Smart Squash is a command-line tool that uses AI and heuristics to intelligently group related commits and generate meaningful commit messages following conventional commit standards. It helps developers clean up their commit history before creating pull requests.

Features

  • Intelligent Commit Grouping: Uses multiple strategies to group related commits:

    • File overlap analysis
    • Temporal proximity
    • Semantic similarity
    • Dependency chain detection
  • AI-Powered Message Generation: Supports multiple AI providers:

    • OpenAI (GPT-4, GPT-3.5)
    • Anthropic (Claude)
    • Local models (via Ollama or llama.cpp)
  • Interactive Review: Preview and adjust groupings before applying changes

  • Safety First:

    • Dry-run mode by default
    • Automatic backup branch creation
    • Comprehensive safety checks
  • Configurable: YAML configuration with sensible defaults

Installation

PyPI (pip)

pip install git-smart-squash

Homebrew (macOS/Linux)

brew install edverma/tools/git-smart-squash

Requirements

  • Python 3.8+
  • Git 2.0+

Development Installation

git clone https://github.com/example/git-smart-squash.git
cd git-smart-squash
pip install -e .

Quick Start

# Basic usage - analyze commits between main and HEAD
git smart-squash

# Specify a different base branch
git smart-squash --base develop

# Dry run to see proposed changes
git smart-squash --dry-run

# Use local AI model instead of cloud APIs
git smart-squash --ai-provider local --model codellama

# Skip AI and use template-based messages
git smart-squash --no-ai

Configuration

Create a .git-smart-squash.yml file in your repository:

grouping:
  time_window: 1800  # 30 minutes
  min_file_overlap: 1
  similarity_threshold: 0.7

commit_format:
  types: [feat, fix, docs, style, refactor, test, chore]
  scope_required: false
  max_subject_length: 50

ai:
  provider: openai  # or anthropic, local
  model: gpt-4
  api_key_env: OPENAI_API_KEY

output:
  dry_run_default: true
  backup_branch: true
  force_push_protection: true

AI Provider Setup

OpenAI

export OPENAI_API_KEY="your-api-key"
git smart-squash --ai-provider openai --model gpt-4

Anthropic

export ANTHROPIC_API_KEY="your-api-key"
git smart-squash --ai-provider anthropic --model claude-3-sonnet-20240229

Local Models (Ollama)

# Install and start Ollama
ollama serve
ollama pull codellama

# Use with git-smart-squash
git smart-squash --ai-provider local --model codellama

Examples

Basic Workflow

# 1. Check repository status
git smart-squash status

# 2. Analyze and group commits (dry run)
git smart-squash --dry-run

# 3. Review the generated script
cat git-smart-squash-script.sh

# 4. Apply changes if satisfied
git smart-squash --auto

Advanced Usage

# Use specific grouping strategies
git smart-squash --strategies file_overlap temporal

# Custom time window for temporal grouping
git smart-squash --time-window 3600  # 1 hour

# Generate script without AI
git smart-squash --no-ai --dry-run --output my-rebase.sh

How It Works

  1. Commit Analysis: Extracts metadata, file changes, and diffs from git history
  2. Intelligent Grouping: Applies multiple strategies to find related commits:
    • File Overlap: Groups commits that modify the same files
    • Temporal: Groups commits made within a time window
    • Semantic: Groups commits with similar messages or change patterns
    • Dependency: Groups commits that build upon each other
  3. Message Generation: Uses AI or templates to create conventional commit messages
  4. Interactive Review: Shows proposed groupings for user approval
  5. Safe Execution: Creates backups and performs safety checks before applying changes

Safety Features

  • Dry run by default: Preview changes before applying
  • Automatic backups: Creates backup branches before operations
  • Safety checks: Verifies clean working directory, no merge conflicts, etc.
  • Rollback support: Easy restoration from backup branches

Contributing

We welcome contributions! Please see our Contributing Guide for details.

License

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

Roadmap

  • Interactive TUI for grouping review and editing
  • Integration with popular git GUIs
  • Plugin system for custom grouping strategies
  • Team-shared configuration profiles
  • Integration with CI/CD pipelines
  • Support for more AI providers

Support

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git_smart_squash-1.0.2.tar.gz (41.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

git_smart_squash-1.0.2-py3-none-any.whl (51.6 kB view details)

Uploaded Python 3

File details

Details for the file git_smart_squash-1.0.2.tar.gz.

File metadata

  • Download URL: git_smart_squash-1.0.2.tar.gz
  • Upload date:
  • Size: 41.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for git_smart_squash-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f66663d9f6ccf28e36a77eea285213811ea37e53949bf2970136cefc7c3a5b74
MD5 174d87087199f647a54bb2cbaab1fca9
BLAKE2b-256 e121bc15e1d9f0cb81e83bef863182e6410a3c0c246a2b3401af087d6a1f7e9c

See more details on using hashes here.

File details

Details for the file git_smart_squash-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for git_smart_squash-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 74189c5b95989037680f530d9aa92119f4cfbe9769da1228e783d995f5a04253
MD5 20e1418781db221711b1443fbc2a9ae0
BLAKE2b-256 5e6039c7c243a45835804a850b88069227d81745c9bb0251f6d227e778177942

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page