Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeffkaufman/icdiff
improved colored diff
https://github.com/jeffkaufman/icdiff
Last synced: 4 days ago
JSON representation
improved colored diff
- Host: GitHub
- URL: https://github.com/jeffkaufman/icdiff
- Owner: jeffkaufman
- License: other
- Created: 2010-08-02T13:55:38.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2024-04-25T20:57:27.000Z (9 months ago)
- Last Synced: 2024-12-31T03:07:20.477Z (12 days ago)
- Language: Python
- Homepage: http://www.jefftk.com/icdiff
- Size: 211 KB
- Stars: 4,210
- Watchers: 62
- Forks: 176
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: LICENSE
Awesome Lists containing this project
- my-awesome-starred - icdiff - improved colored diff (Python)
- my-awesome-github-stars - jeffkaufman/icdiff - improved colored diff (Python)
- awesome-repositories - jeffkaufman/icdiff - improved colored diff (Python)
- awesome-diff-tools - icdiff - Standalone application for side-by-side diffs with syntax highlighting. (Source Code / Diff Enhancers)
- starred-awesome - icdiff - improved colored diff (Python)
- my-awesome - jeffkaufman/icdiff - 04 star:4.2k fork:0.2k improved colored diff (Python)
- awesomeLibrary - icdiff - improved colored diff (语言资源库 / python)
README
# 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.