Clone this repo:
  1. 792786c Merge branch 'shazow-master' by Patrick Mezard · 3 years ago master v1.0.0
  2. 4d60064 tests: test header is omitted if file names are empty by Patrick Mezard · 3 years ago
  3. 509b2ff Skip file headers if FromFile/ToFile are empty by Andrey Petrov · 3 years ago
  4. e8554b8 Merge branch 'fix-formatting' by Patrick Mezard · 3 years ago
  5. 7b7f521 difflib: fix error handling in WriteContextDiff by Patrick Mezard · 3 years ago


Build Status GoDoc

Go-difflib is a partial port of python 3 difflib package. Its main goal was to make unified and context diff available in pure Go, mostly for testing purposes.

The following class and functions (and related tests) have be ported:

  • SequenceMatcher
  • unified_diff()
  • context_diff()


$ go get

Quick Start

Diffs are configured with Unified (or ContextDiff) structures, and can be output to an io.Writer or returned as a string.

diff := UnifiedDiff{
    A:        difflib.SplitLines("foo\nbar\n"),
    B:        difflib.SplitLines("foo\nbaz\n"),
    FromFile: "Original",
    ToFile:   "Current",
    Context:  3,
text, _ := GetUnifiedDiffString(diff)

would output:

--- Original
+++ Current
@@ -1,3 +1,3 @@