A GUI commit history timeline viewer for Git repositories.
- Visual timeline of Git commits with addition/deletion statistics
- File tree view showing changed files across commits
- Inline diff visualization for file changes
- Support for both local and remote Git repositories
- Dark and light theme options
- Branch switching capability
Install via Homebrew using this repository as a tap:
brew tap thehonker/diffsurfer https://github.com/thehonker/diffsurfer.gitThen install Diffsurfer:
brew install --cask diffsurfer- Download the
.dmgfile from the latest release - Open the DMG file and drag Diffsurfer to your Applications folder
- Download the
.exeinstaller from the latest release - Run the installer and follow the installation wizard
- Download the
.AppImagefile from the latest release - Make it executable:
chmod +x Diffsurfer-*.AppImage - Run the AppImage
- Download the
.tar.gzfile from the latest release - Extract it:
tar -xzf Diffsurfer-*.tar.gz - Run the executable:
./Diffsurfer
-
Clone the repository:
git clone https://github.com/thehonker/diffsurfer.git
-
Install dependencies:
npm install --include=dev
-
Build the application:
npm run build
Build and run the application:
npm run devOr just run the built application:
npm run start- When the application starts, you'll see a repository loading screen
- Enter a file:// URL pointing to a local Git repository, or a git:// URL for a remote repository
- Alternatively, click "Load Repository" without entering a URL to browse for a local directory
- The application will load the commit history and display it in a timeline view
- Click on commits in the timeline to view details
- Use mouse wheel or arrow keys to navigate through commits
- Select files in the sidebar to view their diffs
- Switch branches using the branch selector dropdown
- Change themes using the theme selector
Build the application:
npm run buildThis will:
- Run ESLint to check for code issues
- Compile TypeScript files
- Copy static assets to the dist directory
Run linting checks:
npm testRun the application in server mode to serve the UI over HTTP:
npm run serverThe server will be available at http://localhost:3000
Create distributable packages for all platforms:
npm run distOr create packages for specific platforms:
# macOS
npm run dist:mac
# Windows
npm run dist:win
# Linux
npm run dist:linuxThis project uses GitHub Actions for automated building and packaging:
- macOS:
.dmgand.zippackages - Windows: NSIS installer and
.ziparchive - Linux: AppImage and
.tar.gzarchive
To create a new release:
- Create a new git tag:
git tag v1.2.3 - Push the tag:
git push origin v1.2.3 - GitHub Actions will automatically build and create a release with all packages
Contributions are welcome! Please feel free to submit a Pull Request.
Attribution-NonCommercial-ShareAlike 4.0 International
