Weave: Merging based on language structure and not lines
ataraxy-labs.github.io
Weave: Merging based on language structure and not lines
1–10 of 51 posts
Re: Weave: Merging based on language structure and not lines
#2how does it fare on organisation repos ? Its quite tricky to make it work on org plans where git based merge goes through a lot of code scannings and stuffs i guess. Curious to know about that
Re: Weave: Merging based on language structure and not lines
#3how does it fare on organisation repos ? Its quite tricky to make it work on org plans where git based merge goes through a lot of code scannings and stuffs i guess. Curious to know about that
Good question. Weave is a standard git merge driver, so it slots into the existing flow rather than replacing it. You wire it up in .gitattributes, and it only changes the 3-way conflict-resolution step that git already runs. The output is a normal merged tree, so everything an org layers on top still runs unchanged: branch protection, required status checks, code scanning, CI. It isn't bypassing any of that. It just resolves conflicts by entity structure (functions, classes, methods) instead of line hunks, then hands a regular file back to git.
Re: Weave: Merging based on language structure and not lines
#4First image I see should be a difference of how the merges work.
Re: Weave: Merging based on language structure and not lines
#5How does it compare to SemanticDiff extension?
Re: Weave: Merging based on language structure and not lines
#6Without having looked into how Weave works, it sounds similar to Mergiraf: https://mergiraf.org/
Re: Weave: Merging based on language structure and not lines
#7Without having looked into how Weave works, it sounds similar to Mergiraf: https://mergiraf.org/
There's a benchmark on the site that compares with mergiraf.
Re: Weave: Merging based on language structure and not lines
#8Pretty cool.
I always thought merges should happen by comparing the AST and not lines
Re: Weave: Merging based on language structure and not lines
#9[dead]
Re: Weave: Merging based on language structure and not lines
#10I'm working on an online diff tool (https://codeinput.com/products/merge-conflicts) and recently added a mergiraf integration. Basically, the tool loads your git merge but uses mergiraf as the resolution driver. Then add these auto-resolved files to the editor instead of auto-resolving directly.
I also tried out weave, but apart from TypeScript, I haven't found any cases where it actually outperforms mergiraf (I run a bot that watches for new merge conflicts on GitHub, so I've got a steady stream of conflicts to test against).
I reached out a couple months ago on Reddit, but I don't think we ever landed on a time to talk. Would be interested to re-connect again.