Comment by gmueckl
6 hours ago
Tools that support non-destructive editing workflows could in theory provide limited diff and merge capabilities on their internal graphs pf non-destructive operations. E.g. Photoshop could in theory merge two files where unrelated layers have changed. But nobody is actually implementing this because it would be lots and lots of work.
Yeah, it's a cool idea, but for proprietary formats, it's much harder for outsiders to do, and the original companies just don't see it as something they should take care of. My gut says there's too many changes that couldn't be cleanly merged anyway, so they think it's not worth the bother. (And they might be right.)
At least for code, I know people have attempted format-aware, structural diffing for a while. The Lisp communities tried a few times, because s-exps are trivial to turn into trees. None became the standard diff tool, though. However, modern tools like difftastic used tree-sitter to bring a lot of language-aware diffing to the masses.
- https://docs.racket-lang.org/sexp-diff/index.html
- https://github.com/michaelw/mw-diff-sexp
- https://github.com/lambdaisland/deep-diff2
- https://fazzone.github.io/autochrome.html
- https://github.com/Wilfred/difftastic