Skip to content

Commit

Permalink
Implement diff-so-fancy script for use without Git
Browse files Browse the repository at this point in the history
"diff-so-fancy" (1) has been designed to work within Git controlled
directories. To allow to use it to compare files that are not controlled
by Git the "--no-index" (2) option of "git-diff" has been used.

The script pipes the output to "less" using the options

* "-R, --RAW-CONTROL-CHARS" to only display ANSI "color" escape
  sequences in "raw" form
* "-F, --quit-if-one-screen" to automatically exit if the entire file
  can be displayed on the first screen.
* "-X, --no-init" to disable sending the termcap (de)initialization
  strings to the terminal to avoid unnecessary operations like clearing the screen.
* "-x2, --tabs=2" to use two tab stops.

References:

  * so-fancy/diff-so-fancy#220 (comment)
  (1) https://github.com/so-fancy/diff-so-fancy
  (2) https://git-scm.com/docs/git-diff#git-diff-emgitdiffem--no-index--options--ltpathgt823082

GH-61
  • Loading branch information
arcticicestudio committed Nov 15, 2017
1 parent 11c003e commit b999307
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions snowblocks/bash/bin/dsf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2017 Arctic Ice Studio <development@arcticicestudio.com>
# Copyright (c) 2016-2017 Sven Greb <code@svengreb.de>

# Project: igloo
# Repository: https://github.com/arcticicestudio/igloo
# License: MIT

set -euo pipefail

# Allows to use "diff-so-fancy" to compare files that are not controlled by Git.
# Under the hood it makes use of "git diff" by using the "no-index" option which allows to compare the given two
# paths/files on the filesystem outside a working tree controlled by Git.
#
# @param $1 the path/files to compare
# @param $2 the path/files to be compared
# @see https://github.com/so-fancy/diff-so-fancy/issues/220#issuecomment-282530252
dsf() {
if [ "$#" -eq 2 ]; then
git diff --no-index --color "$@" | diff-so-fancy | less -RFXx2
fi
}

dsf $@

0 comments on commit b999307

Please sign in to comment.