Intelligent tool for collecting, analyzing, and summarizing GitHub Pull Requests and commits
Project description
GitHub PR & Commit Analyzer
中文文档 | English
A powerful command-line tool for intelligently collecting, analyzing, and summarizing GitHub Pull Requests and commit records. Supports keyword-based smart search and AI-powered analysis features.
✨ Key Features
- 🔍 Smart Search: AI-powered keyword extraction and intelligent PR/Commit search
- 📊 Data Collection: Automatically collect open and merged PRs, as well as merge commits
- 🔄 Diff Viewing: Complete code change viewing functionality
- 🤖 AI Analysis: Integrated with cursor-agent CLI for intelligent change summarization
- 📅 DateTime Display: Comprehensive date/time information for all PRs and commits
- 💼 Production Quality: Complete error handling, logging, and user experience
- 🎨 Beautiful Output: Professional terminal output using Rich library
- ⚙️ Environment Variables: Direct environment variable configuration (no config files needed)
📋 Prerequisites
Before using this tool, ensure the following dependencies are installed:
Required Dependencies
-
Python 3.8+
python --version # should be >= 3.8
-
Git
git --version -
GitHub CLI (gh)
# Ubuntu/Debian sudo apt install gh # macOS brew install gh # Windows choco install gh
After installation, you need to login:
gh auth login
Optional Dependencies
- cursor-agent CLI (for AI analysis features)
- If you need AI analysis features, please deploy cursor-agent in advance
- Configure the path in the
.envfile
🚀 Installation
Method 1: Install from Source
# Clone or download the project
cd github-pr-analyzer
# Install dependencies
pip install -r requirements.txt
# Or install using setup.py
pip install -e .
Method 2: Using Virtual Environment (Recommended)
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Linux/macOS:
source venv/bin/activate
# Windows:
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
⚙️ Configuration
Configure the tool using environment variables:
# AI Configuration (Optional)
export CURSOR_AGENT_PATH=/path/to/cursor-agent
# Default Settings (Optional)
export DEFAULT_MONTHS=3
export DEFAULT_REPO_PATH=.
No configuration files needed - just set environment variables directly!
📖 Usage
Basic Commands
1. Collect PRs and Commits
# Auto-detect current repository
python main.py collect
# Specify repository
python main.py collect --repo owner/repo
# Specify time range (months)
python main.py collect --months 6
2. Search for Relevant Changes
# Basic search
python main.py search "bug fix authentication"
# With AI analysis
python main.py search "add new feature" --analyze
# Show diff
python main.py search "optimization" --show-diff
# Advanced options with smart search
python main.py search "refactor" \
--repo owner/repo \
--months 6 \
--min-score 50 \
--max-results 10 \
--analyze \
--smart-search
# Disable smart search (use traditional search)
python main.py search "refactor" --no-smart-search
3. View Specific PR
# View PR details
python main.py view-pr 123
# View PR with AI analysis
python main.py view-pr 123 --analyze
# Specify repository
python main.py view-pr 123 --repo owner/repo
4. View Specific Commit
# View commit details
python main.py view-commit abc1234
# View and analyze
python main.py view-commit abc1234 --analyze
5. Interactive Mode
# Launch interactive interface
python main.py interactive
🎯 Use Cases
Scenario 1: Find All Changes Related to Specific Feature
# Search for all PRs and commits related to "authentication"
python main.py search "authentication" --months 3 --analyze
# Output:
# - List of matching PRs and commits (sorted by relevance)
# - AI-generated summary for each change
# - Option to save analysis report
Scenario 2: Review Recent Merges
# Collect all merges from the last 3 months
python main.py collect --months 3
# Then search for specific types of changes
python main.py search "performance optimization" --show-diff
Scenario 3: Deep Dive into Specific PR
# View complete information for PR #456
python main.py view-pr 456 --analyze
# Output includes:
# - PR basic information
# - Complete diff
# - AI analysis: purpose, impact, technical details
🛠️ Development
Project Structure
github-pr-analyzer/
├── main.py # Program entry point
├── setup.py # Installation configuration
├── requirements.txt # Dependency list
├── .env.example # Configuration template
├── .gitignore # Git ignore rules
├── README.md # This document
└── src/
├── __init__.py
├── config.py # Configuration management
├── utils.py # Utility functions
├── pr_collector.py # PR collection module
├── commit_collector.py # Commit collection module
├── diff_viewer.py # Diff viewing module
├── matcher.py # Smart matching module
├── ai_analyzer.py # AI analysis module
└── cli.py # Command-line interface
Running Tests
# Basic functionality test
python main.py --help
# Check dependencies
python test_installation.py
📝 FAQ
Q: Getting "gh CLI not authenticated"
A: Run gh auth login and complete GitHub authentication.
Q: Repository not found
A: Make sure you're in a Git repository directory, or use --repo owner/repo to specify explicitly.
Q: AI analysis not available
A: Configure CURSOR_AGENT_PATH in the .env file. AI features are optional.
Q: Too many/too few search results
A: Adjust the --min-score parameter (lower for more results, higher for more precise results).
🤝 Contributing
Issues and Pull Requests are welcome!
📄 License
This project is licensed under the MIT License - free for commercial and personal use.
Copyright (c) 2025 GitHub PR Analyzer Team
🔗 Related Resources
📧 Contact
For questions or suggestions, please contact us via Issues.
Enjoy analyzing! 🎉
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file github_pr_analyzer-3.0.2.tar.gz.
File metadata
- Download URL: github_pr_analyzer-3.0.2.tar.gz
- Upload date:
- Size: 24.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f46339044ca53ee9ca7da7f7ea0375dd4a5ec2fb57de906f485e45339748f176
|
|
| MD5 |
da9d80fcfcd651dbac55efd82a4fdefe
|
|
| BLAKE2b-256 |
ab5fe362182884b49b1eeef98048e5f37c638ef456628c9490c99fb107c9c7c6
|
File details
Details for the file github_pr_analyzer-3.0.2-py3-none-any.whl.
File metadata
- Download URL: github_pr_analyzer-3.0.2-py3-none-any.whl
- Upload date:
- Size: 35.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c012a8015938d4ad8b4680c1bde98e7ceabaa65c63fb8f703fde3d2493290240
|
|
| MD5 |
11faa49128b126d5eedd750eac8c46f0
|
|
| BLAKE2b-256 |
8a6123a60c1ad8a20ba46d090850f451437c29c209a2698a819fd08e917261e0
|