Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

>Git is line-oriented and has no notion of semantic diffs and semantic merges. This makes it a raw tool when working with, ironically, source code.

Git is a content addressable snapshot system, with bolted on code to make it retrospectively appear to be a line-oriented system.

It's worse than you thought.



It's not worse. Snapshots are exactly what you want if you would like to have format-aware diff/merge or to experiment with alternate algorithms.

But it's easier to complain about git and throw out pie-in-the-sky ideas about "modernizing our tools" than to try the actually-existing AST-based diff/merge tools and realize it's 100x more complex for no workflow gain.


As I understand it, you can configure git's difftool to be something more clever than line based





Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: