File: README.md

package info (click to toggle)
icdiff 2.0.7-4.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 612 kB
  • sloc: python: 784; sh: 190; makefile: 17
file content (163 lines) | stat: -rw-r--r-- 4,755 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Icdiff

Improved colored diff

![screenshot](https://www.jefftk.com/icdiff-css-demo.png)

## Installation

Download the [latest](https://github.com/jeffkaufman/icdiff/tags) `icdiff` and put it on your PATH.

Alternatively, install with packaging tools:

```
# pip
pip install icdiff

# apt
sudo apt install icdiff

# homebrew
brew install icdiff

# aur
yay -S icdiff

# nix
nix-env -i icdiff
```

## Usage

```sh
icdiff [options] left_file right_file
```

Show differences between files in a two column view.

### Options

```
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  --cols=COLS           specify the width of the screen. Autodetection is Unix
                        only
  --encoding=ENCODING   specify the file encoding; defaults to utf8
  -E MATCHER, --exclude-lines=MATCHER
                        Do not diff lines that match this regex. Not
                        compatible with the 'line-numbers' option
  --head=HEAD           consider only the first N lines of each file
  -H, --highlight       color by changing the background color instead of the
                        foreground color.  Very fast, ugly, displays all
                        changes
  -L LABELS, --label=LABELS
                        override file labels with arbitrary tags. Use twice,
                        one for each file
  -N, --line-numbers    generate output with line numbers. Not compatible with
                        the 'exclude-lines' option.
  --no-bold             use non-bold colors; recommended for solarized
  --no-headers          don't label the left and right sides with their file
                        names
  --output-encoding=OUTPUT_ENCODING
                        specify the output encoding; defaults to utf8
  -r, --recursive       recursively compare subdirectories
  -s, --report-identical-files
                        report when two files are the same
  --show-all-spaces     color all non-matching whitespace including that which
                        is not needed for drawing the eye to changes.  Slow,
                        ugly, displays all changes
  --tabsize=TABSIZE     tab stop spacing
  -t, --truncate        truncate long lines instead of wrapping them
  -u, --patch           generate patch. This is always true, and only exists
                        for compatibility
  -U NUM, --unified=NUM, --numlines=NUM
                        how many lines of context to print; can't be combined
                        with --whole-file
  -W, --whole-file      show the whole file instead of just changed lines and
                        context
  --strip-trailing-cr   strip any trailing carriage return at the end of an
                        input line
  --color-map=COLOR_MAP
                        choose which colors are used for which items. Default
                        is --color-map='add:green_bold,change:yellow_bold,desc
                        ription:blue,meta:magenta,separator:blue,subtract:red_
                        bold'.  You don't have to override all of them:
                        '--color-map=separator:white,description:cyan
```

## Using with Git

To see what it looks like, try:

```sh
git difftool --extcmd icdiff
```

To install this as a tool you can use with Git, copy
`git-icdiff` into your PATH and run:

```sh
git icdiff
```

You can configure `git-icdiff` in Git's config:

```
git config --global icdiff.options '--highlight --line-numbers'
```

## Using with subversion

To try it out, run:

```sh
svn diff --diff-cmd icdiff
```

## Using with Mercurial

Add the following to your `~/.hgrc`:

```sh
[extensions]
extdiff=

[extdiff]
cmd.icdiff=icdiff
opts.icdiff=--recursive --line-numbers
```

Or check more [in-depth setup instructions](https://ianobermiller.com/blog/2016/07/14/side-by-side-diffs-for-mercurial-hg-icdiff-revisited/).

## Setting up a dev environment

Create a virtualenv and install the dev dependencies.
This is not needed for normal usage.

```sh
virtualenv venv
source venv/bin/activate
pip install -r requirements-dev.txt
```

## Running tests

```sh
./test.sh python3
```

## Making a release

- Update ChangeLog with all the changes since the last release
- Update `__version__` in `icdiff`
- Run tests, make sure they pass
- `git commit -a -m "release ${version}"`
- `git push`
- `git tag release-${version}`
- `git push origin release-${version}`
- A GitHub Action should be triggered due to the release tag being pushed, and will upload to PyPI.

## License

This file is derived from `difflib.HtmlDiff` which is under [license](https://www.python.org/download/releases/2.6.2/license/).
I release my changes here under the same license. This is GPL compatible.