Earlier quoted context omitted.
Yup. “Storing moves” is the kind of thing that might sound intuitively obvious but then gets gnarly and non-obvious when you think about it for five minutes. And so something that might be “obvious” to do then turns out to be so non-obvious—how to catch all file moves (intent) outside of simple identitical content cases, and how do you represent them internally?—that you realize that just using snapshots is really th…
It’s completely trivial. The obvious and correct place is in the commit object just like author and date and such, since renaming is semantically part of the commit, not the tree: commit 0123456789abcdef0123456789abcdef01234567 parent fedcba9876543210fedcba9876543210fedcba98 author Nemo 1234567890 +0000 committer Nemo 1234567890 +0000 rename-from path1.old rename-to path1.new rename-from path2.old rename-to path2.new…
(yes, some IDE might have git integration, but personally I don't like my IDE messing with git, except read-only (annotate, diff))