Git's line obsession meets its match
A Rust merge driver that resolves false conflicts by understanding code structure instead of counting lines.

What it does Weave is a Git merge driver that swaps line-based diffing for entity-level merging. It parses base, ours, and theirs through tree-sitter, matches functions/classes/JSON keys by identity, and auto-resolves changes to different entities in the same file. When two branches add unrelated functions, Weave merges them cleanly instead of crying conflict.
The interesting bit
The README benchmarks Weave against real merge commits from git/git, Flask, CPython, Go, and TypeScript. It claims zero regressions across all repos, with “wins” where Git forced a manual resolution on independent changes. The conflict markers even name the offending entity—function 'process' (both modified)—which beats Git’s cryptic line ranges.
Key highlights
- 31/31 clean merges on real-world scenarios vs. Git’s 15/31 and Mergiraf’s 26/31
- 28 supported languages including TypeScript, Python, Go, Rust, JSON, YAML, Markdown
weave setupconfigures Git automatically;weave previewdry-runs merges before committing- Works with Jujutsu (jj) as a merge tool
- Falls back to standard line merge for files >1MB, binaries, or unsupported types
- MCP server integration mentioned but not detailed in README
Caveats
- Real-world resolution rates vary: 54% on Flask, but only 6% “human match” on TypeScript and 13% on git/git—most merges still need human touch somewhere
- Version 0.3.0, so relatively early; 124 passing tests per badge, but maturity unclear
- Human match percentages suggest Weave’s clean output often differs from what humans actually wrote
Verdict Worth trying if you run multi-agent workflows or hit constant false conflicts in large files. Less compelling if your team rarely touches the same files, or if you need 100% reproducibility with human-authored merge commits.