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

go-difflib

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()

Installation

$ go get github.com/pmezard/go-difflib/difflib

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)
fmt.Printf(text)

would output:

--- Original
+++ Current
@@ -1,3 +1,3 @@
 foo
-bar
+baz