3 个不稳定版本

0.2.0 2024年8月14日
0.1.1 2024年8月12日
0.1.0 2024年4月14日

#612 in 文本处理

Download history 3/week @ 2024-05-17 2/week @ 2024-05-24 211/week @ 2024-08-09 51/week @ 2024-08-16

262 每月下载量

Apache-2.0 和可能 GPL-2.0+

56KB
1.5K SLoC

Merge3

文本三路合并的 Rust 实现。

给定 BASE、OTHER、THIS,尝试生成一个合并文本,包含从 BASE->OTHER 和 BASE->THIS 的更改。所有三个通常都是行序列。

用法

从命令行:


$ echo foo > mine
$ echo bar > base
$ echo blah > other
$ merge3 mine base other > merged
$ cat merged

或从 rust


use merge3::Merge3;

fn main() {
    let base = vec!["common\n", "base\n"];
    let this = vec!["common\n", "a\n"];
    let other = vec!["common\n", "b\n"];

    let m3 = Merge3::new(&base, &this, &other);

    for line in m3.merge_lines() {
        println!("{}", line);
    }
}

lib.rs:

Merge3

文本三路合并的 Rust 实现。

给定 BASE、OTHER、THIS,尝试生成一个合并文本,包含从 BASE->OTHER 和 BASE->THIS 的更改。所有三个通常都是行序列。

示例

use merge3::Merge3;

let base = vec!["common\n", "base\n"];
let this = vec!["common\n", "a\n"];
let other = vec!["common\n", "b\n"];

let m3 = Merge3::new(&base, &this, &other);

for line in m3.merge_lines(false, &merge3::StandardMarkers::default()) {
    println!("{}", line);
}

依赖项

~31–320KB