A lightweight, dependency-free Node.js tool for reviewing changes across multiple commits in a Git repository. Nice for reviewing all changes made for a specific ticket.
CAUTION: This is vibe-coded in about 3h with Anthropics' Claude. Vibe-coded in the sense of not code-inspected at all, just manually tested and used. Use at your own risk. Still, I found it very useful. I didn't check the code because I didn't need to - it just worked as intended.
Git Change Review Helper provides a simple web-based interface to:
- Filter commits by regex patterns (e.g., ticket numbers like
JIRA-1234) - View all files changed across selected commits
- See consolidated diffs showing only your ticket's changes
- Navigate through changes without the noise of unrelated commits
Built with zero npm dependencies - just Node.js built-in modules and Bootstrap from CDN.
Clone the repository and create a symlink to the gitreviewtool script in your PATH.
The script follows symlinks to find the actual code, so you can install it anywhere and run it from any Git repository.
You need node.js in the path.
If you created a symlink (recommended):
cd /path/to/your/git/repo
gitreviewtoolWithout symlink:
cd /path/to/your/git/repo
/path/to/gitreviewtool/gitreviewtoolThe server will start on http://localhost:3032 (or another port if 3032 is busy).
-
Filter Commits
- Enter a regex pattern in the filter field (e.g.,
JIRA-1234orfeature/.*login) - The commit list will highlight matching commits
- Toggle "Show only filtered commits" to hide unmatched commits
- Each commit displays: short hash, author, date, and full message
- Enter a regex pattern in the filter field (e.g.,
-
Review Changed Files
- Filtered commits are automatically selected
- The file list shows all files modified in selected commits, sorted alphabetically
- Click on any file to view its changes
-
View Changes
- My Changes Only: Shows only the lines added/removed by selected commits (consolidated view)
- Full File with Marked Changes: Shows the entire current file with selected commits' changes highlighted
- Toggle between views using the buttons at the top of the diff view
- Multiple changes to the same line are consolidated to show only the net effect of your selected commits
You're working on ticket PROJ-456 with multiple commits over several days. Other developers have also committed to the same files. Use this tool to:
- Filter for
PROJ-456 - See only the 8 commits related to your ticket
- Review all 23 files you changed
- For each file, see exactly what YOUR ticket changed, ignoring unrelated modifications by others
Backend (Node.js)
- Pure Node.js with built-in modules only (
http,child_process,fs,path,url) - RESTful API serving JSON responses
- Git operations executed via
child_process.exec()andchild_process.spawn() - Single-file server implementation for simplicity
Frontend (HTML/CSS/JS)
- Vanilla JavaScript (no frameworks)
- Bootstrap 5.3 from CDN for UI components
- Single-page application with client-side routing/state management
- Responsive design for desktop use
GET /api/commits- Returns all commits with metadata (hash, author, date, message)GET /api/files?commits=hash1,hash2,...- Returns files changed in specified commitsGET /api/diff?file=path&commits=hash1,hash2,...- Returns diff data for a file across commitsGET /- Serves the main HTML interfaceGET /static/*- Serves static assets (CSS/JS if needed)
All Git data is retrieved using command-line git:
git log --all --format=...for commit listgit diff --name-only commit1 commit2...for file listsgit log -p -- <file>for file historygit show commit:pathfor file contentsgit blamefor line-level attribution (optional)
When showing "My Changes Only":
- Get the current state of the file
- For each selected commit, extract the changes (additions/deletions)
- Consolidate multiple changes to the same line, keeping only the net effect
- Display as a unified diff showing before/after for selected commits only
This filters out changes made by other commits between your selected commits.
- Server only accepts connections from localhost
- No file system writes (read-only Git operations)
- Input sanitization for regex patterns and file paths
- Git operations executed in the repository directory only
Modern browsers with ES6+ support:
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Works only with local Git repositories
- Designed for single-user local use (not production deployment)
- No authentication/authorization
- Performance may degrade with very large repositories (1000+ commits in view)
