Yeah, it's been a while
I've been quietly chugging away in the background on Awasu client work, as well as other non-Awasu projects[1]And to be honest, I haven't felt much like writing
, but it's been some time since my last mega-tutorial, so let's remedy that with a deep dive into the internals of everyone's favorite source control system, git.
This tutorial assumes that you are familiar with using git (e.g. commits, branches, tags), and we'll take a look at the internals of git and how it works, and in particular, its file formats.
- git as a content-addressable store
We look at how git works at its lowest level, as a content-addressable store.
- How git implements source control
We look at how git uses its content-addressable store to implement source control.
- Packs
We look at how git compresses its content into packs.
- Delta objects
We look at how git compresses its content even more by using deltas.
- Pack indexes
We look at how git uses an index to speed up access into packs.
- Retrieving objects from a repo
We look at how to retrieve an arbitrary object from a repo, whether it be a loose object or in a pack.
- Delta objects in other packs
We look at reconstructing pack objects that have a base object in another pack.
- The staging index
We look at how git stores what's currently in the staging index.
- git references
We look at how git manages references (refs).
- git logs
We look at how git maintains a history of ref activity.
- Wrapping up
We beef up the scripts, and add code to verify what they're doing.
References
↵1 | And to be honest, I haven't felt much like writing ![]() |
---|
Have your say