diffty is a web-based tool designed to streamline code review processes by providing enhanced diff visualization and lightweight review workflows for Git repositories. The tool focuses on developer ergonomics with keyboard-driven navigation while maintaining compatibility with standard Git workflows.
- Enhanced Diff Visualization: Side-by-side and unified diff views with syntax highlighting
- Multi-Repository Support: Select and switch between multiple repositories through the UI
- Review Workflow: Mark lines as approved, rejected, or skipped
- Keyboard-Centric Navigation: Efficient keyboard shortcuts for all operations
- Review State Persistence: Save and resume reviews across sessions
- Git Integration: Works with any Git repository
- Go 1.22+
- Git 2.30+
-
Clone the repository:
git clone https://github.com/darccio/diffty.git cd diffty
-
Build the binary:
go build -o diffty ./cmd/diffty
-
(Optional) Install the binary:
go install ./cmd/diffty
Start diffty server:
diffty --port 10101
Then open http://localhost:10101 in your web browser. From there, you can:
- Add repositories through the UI
- Select repositories to review
- Choose branches to compare
- Review changes between branches
--port
: Port to run the server on (default: 10101)
Key | Action |
---|---|
a |
Approve |
r |
Reject |
s |
Skip |
←/→ |
Navigate files |
diffty uses the Git command-line tools to generate diffs between branches and presents them in a web interface. You can add and select repositories through the UI, and the review state is stored per repository in a JSON file at $HOME/.diffty/repository/first-branch-commit-hash/second-branch-commit-hash/review-state.json
.
diffty includes comprehensive testing to ensure reliability:
- Unit Tests: Tests for core functionality in each package (
git
,storage
,server
) - Mock-Based Testing: Interfaces are mocked to allow isolated testing
- HTTP Testing: Server handlers are tested using Go's httptest package
- Runtime Testing: Run the tests with:
go test ./...
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the AGPL License - see the LICENSE file for details.