top | item 37800164

(no title)

civopsec | 2 years ago

Some of it might be inherent though. The data structure consists of immutable commits which are addressed by the SHA1 which depends not only on the snapshot but also the metadata as well as the SHA1 of the parents. You run into this immediately when someone thinks that they can maybe just tweak the commit message a little and end up with the same commit. Or drop the second parent of a merge commit in order to “forget” that line of history (effectively making a “squash merge”).

Imagine if someone was working on a SQL database and they thought that an `update` would not change anything in-place but instead would create a new immutable row and that they could reset back to the previous row (before the update) right after that since the immutable row (they thought) would still exist until some arbitrary garbage collection time. You would end up having to explain the same thing but kind of reversed.

discuss

order

Shish2k|2 years ago

> Some of it might be inherent

Other equally-powerful tools (mercurial, sapling, etc) have considerably better UX though

civopsec|2 years ago

That's a different subject that my comment did not try to address.