A program to diff two directories recursively


Keywords
dompare, Linux, diff, directories, linux-utility, python
License
MIT
Install
pip install dompare==0.2.2

Documentation

dompare

BUILD

A command line tool to diff two directories recursively.

Demo

Then visit http://localhost:5240/xxx.html, as shown in output above, you will see the detailed difference of these two directories:

Diff Results

Features

  1. Easy to install and use, nice visualization
  2. Recursively compare same name files in two directories
  3. Optional settings for exclude certain directories
  4. Completely based on Python and HTML, no extra tools needed

Installation

pip3 install dompare

Using dompare

Basic usage

dompare folder-a folder-b

Then open your webbrowser and visit http://localhost:5140, you will see the difference information of folder-a and folder-b.

Public access

You can also use --host and --port options to change your host and port to listen:

dompare folder-a folder-b --host 0.0.0.0 --port 8888

By adding --host 0.0.0.0, you and other people can visit diff file by url http://your_ip:5140/dompare-xxxxxx.html.

Exclude binary folders

You can add --exclude dir1 dir2 to ignore certain directories (e.g., temporal folders, folders with binary files):

dompare dir1 dir2 --exclude build out

Verbose mode

If you need more detailed information, use --verbose option.

dompare folder-a folder-b --verbose
[DEBUG] [2019-10-31 15:35:37] [dompare] Processing dir folder-a/doc
[DEBUG] [2019-10-31 15:35:37] [dompare] Compare folder-a/doc/index.md and folder-b/doc/index.md
[DEBUG] [2019-10-31 15:35:37] [dompare] Compare folder-a/README.md and folder-b/README.md
[INFO] [2019-10-31 15:35:37] [dompare] Compare finished. Please visit http://localhost:5140/dompare-paepy47m.html to see diff file (Press Ctrl-C to stop)
[DEBUG] [2019-10-31 15:35:37] [dompare] Run command: cd /tmp && python3 -m http.server --bind localhost 5140
Serving HTTP on 127.0.0.1 port 5140 ...

For all options, run dompare -h.

dompare -h
usage: dompare [-h] [--host HOST] [--port PORT] [--verbose]
               [--exclude EXCLUDE [EXCLUDE ...]]
               dir1 dir2

positional arguments:
  dir1                  Path to the first directory
  dir2                  Path to the second directory

optional arguments:
  -h, --help            show this help message and exit
  --host HOST           host to bind
  --port PORT           port to listen
  --verbose             Show detailed information
  --exclude EXCLUDE [EXCLUDE ...]
                        Ignore listed directories when diff

TODO

There are some ideas I want to do in the future:

  1. Windows support (tested on Windows 8.1, Python 3.7.2)
  2. More pretty UI to show diff, like font size, scroll bar removing

Contributing

Any contribution is welcomed. If you find a bug or have any new features, please create an issue or a pull request.

License

MIT © Yunfeng Wang