Documentation
¶
Overview ¶
Package diff3 implements a three-way merge algorithm Original version in Javascript by Bryan Housel @bhousel: https://github.com/bhousel/node-diff3, which in turn is based on project Synchrotron, created by Tony Garnock-Jones. For more detail please visit: http://homepages.kcbbs.gen.nz/tonyg/projects/synchrotron.html https://github.com/tonyg/synchrotron
Ported to go by Javier Peletier @jpeletier
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Diff3MergeResult ¶
Diff3MergeResult describes a merge result
func Diff3Merge ¶
func Diff3Merge[T comparable](a, o, b []T, excludeFalseConflicts bool) []*Diff3MergeResult[T]
Diff3Merge applies the output of diff3MergeIndices to actually construct the merged file; the returned result alternates between 'Ok' and 'Conflict' blocks.
type DiffResult ¶
type DiffResult[T any] struct { Common []T File1 []T File2 []T }
func DiffComm ¶
func DiffComm[T comparable](file1, file2 []T) []*DiffResult[T]
We apply the LCS to build a 'comm'-style picture of the differences between file1 and file2.
type MergeIndices ¶
type MergeIndices struct { Side Side AOffset int ALength int OOffset int OLength int BOffset int BLength int }
func Diff3MergeIndices ¶
func Diff3MergeIndices[T comparable](a, o, b []T) []MergeIndices
Given three files, A, O, and B, where both A and B are independently derived from O, returns a fairly complicated internal representation of merge decisions it's taken. The interested reader may wish to consult
Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. 'A Formal Investigation of ' In Arvind and Prasad, editors, Foundations of Software Technology and Theoretical Computer Science (FSTTCS), December 2007.
type MergeResult ¶
type MergeResult struct { Conflicts bool // Conflict indicates if there is any merge conflict Result io.Reader // returns a reader that contains the merge result }
MergeResult describes a merge result