GitHub - TheArcDev/ripple-git: Semantic commit analysis for Python - catch what Git misses · GitHub
/" data-turbo-transient="true" />
Skip to content
Search/
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
TheArcDev
ripple-git
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Latest commit
History<br>5 Commits<br>5 Commits
Folders and files<br>NameNameLast commit message<br>Last commit date<br>.github/workflows
.github/workflows
ripple
ripple
tests
tests
.gitignore
.gitignore
.pre-commit-hooks.yaml
.pre-commit-hooks.yaml
README.md
README.md
pyproject.toml
pyproject.toml
View all files
Repository files navigation
Ripple
Semantic commit analysis for Python — catch what Git misses.
Ripple sits at the commit moment and understands what your code change actually means. Not which lines changed — which functions, which dependencies, what breaks.
The Problem
Git tracks text. It has no idea what your code does.
# You delete this function<br>def generate_token(username):<br>return "token_" + username
# Git commits it cleanly.<br># Three other functions that call it will crash at runtime.<br># Git never warned you.
Ripple catches this before the commit enters your repository.
What Ripple Catches
Deleted functions still called elsewhere — blocked before commit
Modified signatures where callers pass wrong arguments
Cross-file dependencies — catches what Git misses across modules
Import aliases — from auth import logout as sign_out tracked correctly
Class methods — full class context in every report
Syntax errors — unparseable files blocked immediately
Install
pip install ripple-git
Then in any Python project:
cd your-project<br>ripple install
That's it. Every git commit now runs semantic analysis automatically.
Pre-commit Framework Integration
If your project uses the pre-commit framework,<br>add Ripple to your .pre-commit-config.yaml:
repos:<br>- repo: https://github.com/TheArcDev/ripple-git<br>rev: v0.1.0<br>hooks:<br>- id: ripple
Then install:
pre-commit install
What It Looks Like
Running Ripple semantic analysis...
RIPPLE - SEMANTIC COMMIT ANALYSIS ENGINE
File: auth.py
[🔴 CRITICAL] [DELETED] generate_token()<br>→ Had parameters: ['username']
Real breakage detected:<br>'generate_token' was deleted but is still called in 3 location(s)<br>→ auth.py line 2 (1 passed)<br>→ auth.py line 18 (1 passed)<br>→ app.py line 14 (1 passed)
🔴 COMMIT BLOCKED<br>Fix the issues above before committing<br>Use --no-verify to override if intentional
Commands
# Analyze staged changes without committing<br>ripple check
# Analyze working tree including unstaged changes<br>ripple check --working
# Analyze only staged changes<br>ripple check --staged
# Smart commit — analyzes changes and suggests an accurate message<br>ripple commit
# Install hook into current repository<br>ripple install
# Remove hook from current repository<br>ripple uninstall
Smart Commit Messages
Instead of git commit -m "fixed stuff", Ripple reads what actually<br>changed and suggests an accurate message:
Suggested commit message:<br>add check_session(session_id) to auth
[U] Use suggested message<br>[W] Write your own message<br>[Q] Quit — don't commit
Messages are generated from real semantic data — not AI guessing.<br>Always accurate. Always specific.
How It Works
Ripple uses three layers of analysis at every commit:
1. Semantic layer — AST parsing turns code into structured meaning.<br>Not which lines changed — which functions, parameters, and call<br>relationships changed.
2. Graph layer — dependency graph maps how every function connects<br>to every other function across your entire codebase. When something<br>changes, Ripple knows the full blast radius.
3. Call site layer — verifies whether callers of changed functions<br>are actually broken. Only blocks when real breakage exists — never<br>on clean refactors.
Severity Levels
Level<br>Meaning<br>Action
🔴 CRITICAL<br>Real breakage — will crash at runtime<br>Commit blocked
🟠 WARN<br>Other functions depend on this change<br>Review before pushing
🟢 INFO<br>Isolated change — no dependents affected<br>Commit proceeds
Requirements
Python 3.8+
Git
Known Limitations
Ripple is a static analysis tool. It cannot detect:
Dynamic calls via getattr() or eval()
Runtime-only errors unrelated to function signatures
Logic errors in function implementations
These are accepted limitations of static analysis. Ripple catches<br>the structural breakage that causes the most common and most painful<br>production failures.
License
MIT
About<br>Semantic commit analysis for Python - catch what Git misses<br>Resources<br>Readme<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository
Releases
Packages
Contributors
Languages
You can’t perform...