When git repacks[1], which it does periodically (but not on every commit), it will store objects in as compact a form that it can, which basically means that it looks for root objects that it can delta a given object against so it stores each chunk of text as few times as possible.
What it doesn't do is store files as deltas explicitly against the previous or next revision of that file. It attempts to find a best fit dynamically.
It also does something like this packing procedure when responding to a fetch to avoid sending more data than it needs to, btw.
What it doesn't do is store files as deltas explicitly against the previous or next revision of that file. It attempts to find a best fit dynamically.
It also does something like this packing procedure when responding to a fetch to avoid sending more data than it needs to, btw.
[1] https://www.kernel.org/pub/software/scm/git/docs/git-repack....