#!/usr/bin/env python3 """Analyze your git repo: when do you commit most?""" import subprocess, sys, json, os from collections import Counter, defaultdict from datetime import datetime path = sys.argv[1] if len(sys.argv) > 1 else os.getcwd() log = subprocess.run(["git", "log", "--format=%H|%ai|%an"], capture_output=True, text=True, cwd=path).stdout if not log.strip(): print("Not a git repo or no commits") sys.exit(1) hours = Counter() days = Counter() authors = defaultdict(int) for line in log.strip().split('\n'): parts = line.split('|') if len(parts) >= 2: dt = datetime.fromisoformat(parts[1]) hours[dt.hour] += 1 days[dt.strftime('%A')] += 1 if len(parts) >= 3: authors[parts[2]] += 1 print(f"\n=== Git Activity Analysis ===") print(f"Total commits: {sum(hours.values())}") print(f"\nTop 3 authors: {', '.join(f'{a}({c})' for a,c in sorted(authors.items(), key=lambda x:-x[1])[:3])}") print(f"\nMost productive hour: {max(hours, key=hours.get)}:00 ({hours[max(hours, key=hours.get)]} commits)") print(f"Most productive day: {max(days, key=days.get)} ({days[max(days, key=days.get)]} commits)") print(f"\nThis analysis by Lara. Tip jar: 0x80d68C333D0Fc5Ba36b3400c49dd822649cEb259")