Go to file
Romain Failliot a4aceeef76 Remove obsolete translation messages 2021-11-24 11:42:10 -05:00
.github/workflows Add po/ to the linters 2021-11-24 10:41:11 -05:00
.vscode Start modularizing the code 2021-11-16 17:48:34 -05:00
build-aux/meson Start modularizing the code 2021-11-16 17:48:34 -05:00
data Update POTFILES and .pot files 2021-11-24 10:30:33 -05:00
po Remove obsolete translation messages 2021-11-24 11:42:10 -05:00
src Fix all mypy errors 2021-11-22 20:54:46 -05:00
utils Prepare for release v0.7.3 2021-11-22 21:11:39 -05:00
windows-installer Prepare for release v0.7.3 2021-11-22 21:11:39 -05:00
.editorconfig Prepare for release v0.7.3 2021-11-22 21:11:39 -05:00
.flake8 Add po/ to the linters 2021-11-24 10:41:11 -05:00
.gitignore Un-ignore diffuse.pot 2021-11-18 15:40:16 -05:00
.mypy.ini Fix all mypy errors 2021-11-22 20:54:46 -05:00
.pylintrc pylint: enable import-error, no-name-in-module, no-self-use 2021-11-21 15:32:16 -05:00
AUTHORS Add Romain Failliot (me) to AUTHORS 2020-06-19 21:46:29 -04:00
CHANGELOG.md Add --remove-obsolete option to update-translation.py 2021-11-24 11:42:10 -05:00
COPYING Copy the entire text, just to be up-to-date 2021-11-13 13:25:20 -05:00
README.md Update POTFILES and .pot files 2021-11-24 10:30:33 -05:00
io.github.mightycreak.Diffuse.yml Upgrade gnome runtime from 3.38 to 41 2021-11-18 14:58:16 -05:00
meson.build Prepare for release v0.7.3 2021-11-22 21:11:39 -05:00
meson_options.txt Add log options: log_print_output and log_print_stack 2021-11-18 12:12:12 -05:00
requirements.txt Add mypy job in CI 2021-11-22 20:54:44 -05:00

README.md

Diffuse

Diffuse is a graphical tool for merging and comparing text files. Diffuse is able to compare an arbitrary number of files side-by-side and gives users the ability to manually adjust line matching and directly edit files. Diffuse can also retrieve revisions of files from Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion, and SVK repositories for comparison and merging.

Some key features of Diffuse:

  • Ability to compare and merge an arbitrary number of files side-by-side (n-way merges)
  • Line matching can be manually corrected by the user
  • Ability to directly edit files
  • Syntax highlighting
  • Bazaar, CVS, Darcs, Git, Mercurial, Monotone, RCS, Subversion, and SVK support
  • Unicode support
  • Unlimited undo
  • Easy keyboard navigation

Requirements

Diffuse is implemented entirely in Python and should run on any platform with Python and PyGObject.

  • Python >= 3.4
  • PyGObject >= 3.18

Users

Installing using Flatpak

This is the easiest way to install Diffuse:

flatpak install io.github.mightycreak.Diffuse

Developers

Setup

Run Diffuse from source

To run Diffuse from the source code, type this:

python main.py

To debug with VS Code, open the directory in VS Code, place your breakpoints and hit F5.

Build Diffuse

To build Diffuse, type this:

python setup.py build

To run from the build, type this:

PYTHONPATH=build/lib ./build/scripts-3.7/diffuse

Install Diffuse locally

Diffuse build system is meson.

To install diffuse locally:

meson setup build
cd build
meson compile
meson install # requires admin privileges

To uninstall diffuse afterwards:

sudo ninja uninstall -C build
sudo rm -v /usr/local/share/locale/*/LC_MESSAGES/diffuse.mo

Meson allows to change the default installation directories, see command-line documentation.

Installing on Windows

The windows-installer directory contains scripts for building an installable package for Windows that includes all dependencies.

Diffuse can be packaged as a portable application by copying the installation directory to a pen drive and creating a front end that sets the XDG_CONFIG_HOME and XDG_DATA_DIR environment variables prior to launching Diffuse. The XDG_CONFIG_HOME and XDG_DATA_DIR environment variables indicate where Diffuse should store persistent settings (eg. the path to a writable directory on the pen drive).

Building and testing the Flatpak package

To install Diffuse locally:

flatpak install runtime/org.gnome.Sdk/$(uname -p)/3.38
flatpak-builder build-flatpak --user --install io.github.mightycreak.Diffuse.yml

To run Diffuse through Flatpak:

flatpak run io.github.mightycreak.Diffuse

To uninstall Diffuse:

flatpak remove io.github.mightycreak.Diffuse

Help Documentation

Diffuse's help documentation is written in the DocBook format and can be easily converted into other formats using XSLT stylesheets. If the local help documentation or its browser are unavailable, Diffuse will attempt to display the on-line help documentation using a web browser.

Licenses

Diffuse is under the GPLv2.

The file io.github.mightycreak.Diffuse.appdata.xml.in is licensed under the FSF-AP license.

Copyright (C) 2006-2019 Derrick Moser derrick_moser@yahoo.com
Copyright (C) 2015-2021 Romain Failliot romain.failliot@foolstep.com

Icon made by @jimmac.