Weave – A language aware merge algorithm based on entities
Git fusionne par lignes et peut générer des conflits même lorsque les changements dans un fichier sont indépendants. Weave remplace le merge linéaire par un merge au niveau des entités en analysant base, ours et theirs avec tree-sitter et en identifiant les entités par identité (nom, type et portée). Le processus fusionne les entités en séparant les cas: erreurs auto-résolues lorsque des entités différentes ont été modifiées, intra-entité lorsqu'une même entité est modifiée des deux côtés, et conflits pertinents lorsqu'une entité est modifiée et supprimée simultanément. Des benchmarks réels montrent des gains où Git aurait produit des conflits mais Weave les résout, sans régressions constatées et avec une meilleure adhérence à ce que l’humain aurait écrit. Weave prend en charge TypeScript, JavaScript, Python, Go, Rust, JSON, YAML, TOML et Markdown, et propose un setup Git et un mode preview pour anticiper la fusion, avec un fallback sur le merge linéaire pour les fichiers non pris en charge ou volumineux.