Three-way merge and diff using Myers' algorithm for Swift.
dependencies: [
.package(url: "https://github.com/nathanborror/swift-merge.git", from: "1.0.0")
]import Merge
// Three-way merge
let result = Merge.threeWay(
base: ["A", "B", "C"],
ours: ["A", "X", "C"],
theirs: ["A", "B", "Y"]
)
switch result {
case .success(let merged):
print(merged) // ["A", "X", "Y"]
case .conflict(let conflict):
print(conflict.conflicts)
}
// Diff
let changes = Merge.diff(original: ["A", "B"], modified: ["A", "C"])String variants are also available: Merge.threeWayStrings() and Merge.diffStrings().
See the test suite for detailed usage examples and edge cases.