mergers 0.2.0

A visual diff and merge tool for files and directories
mergers-0.2.0 is not a library.
Visit the last successful build: mergers-0.8.2

mergers

workflow status security audit

A visual diff and merge tool written in Rust with GTK4, inspired by Meld.

WARNING: This software is alpha-quality and under active development. It may eat your files, corrupt your data, or silently discard changes. Always keep backups and use version control. You have been warned.

Features

  • Two-way file comparison with syntax highlighting (GtkSourceView 5)
  • Three-way merge for resolving conflicts
  • Directory comparison with recursive scanning and async background diffing
  • Git integration — run mergers . to view uncommitted changes
  • Inline word-level diff highlighting
  • Ignore whitespace / blank lines options
  • Find & Replace within panes
  • Go to line (Ctrl+L)
  • Undo / Redo
  • Chunk navigation with keyboard shortcuts
  • Chunk map — visual overview strips alongside each pane
  • Patch export (unified diff format)
  • Swap panes
  • Custom pane labels via -L flag
  • Directory copy/delete operations
  • File watcher — auto-reloads when files change on disk
  • Configurable folder filters (exclude patterns like node_modules, .git, etc.)
  • Preferences dialog — font, color scheme, tab width, filters, with live preview
  • Binary file detection — prevents loading binary files into text buffers

Usage

# Compare two files
mergers file1.txt file2.txt

# Compare two directories
mergers dir1/ dir2/

# Three-way merge (left, merged, right)
mergers local.txt merged.txt remote.txt

# View uncommitted git changes
mergers .

# Custom labels
mergers file1.txt file2.txt -L "Original" -L "Modified"

Git Mergetool

To use mergers as your git merge tool:

git config merge.tool mergers
git config mergetool.mergers.cmd 'mergers "$LOCAL" "$MERGED" "$REMOTE"'
git config mergetool.mergers.trustExitCode true

Then resolve conflicts with:

git mergetool

Building

Requires GTK4 and GtkSourceView 5 development libraries.

# Debian/Ubuntu
sudo apt install libgtk-4-dev libgtksourceview-5-dev

# Fedora
sudo dnf install gtk4-devel gtksourceview5-devel

# Arch
sudo pacman -S gtk4 gtksourceview5

# Build
cargo build --release

License

GPL-2.0