41 lines
1.1 KiB
Markdown
41 lines
1.1 KiB
Markdown
# 3-way merge
|
|
|
|
Tho tools to make smart merge of two versions of changed original data. See [merge3] function online docs.
|
|
|
|
## Usage
|
|
|
|
Add dependency:
|
|
|
|
~~~kotlin
|
|
repositories {
|
|
//...
|
|
maven("https://gitea.sergeych.net/api/packages/SergeychWorks/maven")
|
|
}
|
|
~~~
|
|
|
|
and in the source set dependencies something like
|
|
|
|
~~~kotlin
|
|
dependencies {
|
|
// ...
|
|
implementation("net.sergeych:mp_diff:0.0.1-SNAPSHOT")
|
|
}
|
|
~~~
|
|
|
|
Now call it in the code
|
|
|
|
~~~kotlin
|
|
val src = "Hello world".toList()
|
|
val a = "Hello friend".toList()
|
|
val b = "Bye world".toList()
|
|
|
|
val m = merge3(src, b, a)
|
|
assertEquals("Bye friend", m.merged.joinToString(""))
|
|
println(m.blocks)
|
|
~~~
|
|
|
|
## Acknowledgments
|
|
|
|
This work is based on the original kotlin diff port https://github.com/GitLiveApp/kotlin-diff-utils work, unfortunatley its packaging is not compatible with current kotlin MP formats so I can't just use it as the dependencies. The wholde `dev.gitlive.difflib` is taken from the link above, where it was published under the [Apache 2.0 license at the moment of borrowing this code](https://github.com/GitLiveApp/kotlin-diff-utils/blob/master/LICENSE).
|
|
|