this post was submitted on 05 Jan 2024
9 points (100.0% liked)

Git

2911 readers
1 users here now

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Resources

Rules

  1. Follow programming.dev rules
  2. Be excellent to each other, no hostility towards users for any reason
  3. No spam of tools/companies/advertisements. It’s OK to post your own stuff part of the time, but the primary use of the community should not be self-promotion.

Git Logo by Jason Long is licensed under the Creative Commons Attribution 3.0 Unported License.

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 5 points 10 months ago (1 children)

Commits are snapshots with tracking that enables diffing and histories. git very specifically focuses on commits containing complete information (snapshots) instead of older diffing models that would need to sometimes replay diffs to arrive at a commit state.

[–] technom 2 points 10 months ago

Mercurial took an interesting approach here. It stores commits as diffs with occasional snapshots in between. This is similar to how video codecs store frames as deltas with occasional full 'keyframes' in between. This is the way Mercurial blunts the diff-replay problem you mentioned.

Git AFAIK, stores each file modification as full snapshot, until it is packed at some stage. Mercurial doesn't need this work around. Mercurial diffs are also format-neutral. It works fine with binary data.