Re: CAREFUL! No more delta object support!
- From
Linus Torvalds <torvalds@osdl.org>
- Date
- Jun 29, 2005, 03:53 UTC
- Message-ID
- <Pine.LNX.4.58.0506282041360.19755@ppc970.osdl.org>
- In-Reply-To
- <Pine.LNX.4.58.0506281111480.19755@ppc970.osdl.org>
On Tue, 28 Jun 2005, Linus Torvalds wrote:
Show 8 quoted lines
> > > I'm not sure I > > want to write the "parse incoming pack-file" thing, but git-unpack-objects > > comes _reasonably_ close (but right now it seeks around using the index > > file to resolve deltas, instead of keeping them in memory and resolving > > them when possible). > > I'm still thinking about this one. I think I'll just do it.
Ok, done. I had to basically rewrite that unpacking logic, but the end result is actually slightly smaller and cleaner, and it can now unpack from a stream. That stream reading logic that uncompresses directly from the stream buffer might be considered a bit too subtle (and somebody should really double-check it), but hey, it works for me.
In fact, I just did this:
# # Create empty git archive "~/unpack" # mkdir ~/unpack cd ~/unpack git-init-db
# # Copy the git archive there over a pipe # cd ~/git git-rev-list --objects HEAD | git-pack-objects --depth=50 --window=50 --stdout | (cd ~/unpack ; git-unpack-objects)
# # Go to new archive, set up the head, and fsck to verify # cd ~/unpack cat ~/git/.git/HEAD > .git/HEAD git-fsck-cache --unreachable
Now, the above is a silly example, since I _could_ just have moved the pack file into .git/objects/pack, but that was not the point of this whole thing. The point was to do what a "git-ssh-push" would basically boil down to.
I'd like somebody who knows zlib intimately to take a look at how I do the streaming input thing (in particular, the "use(len - stream.avail_in);" part in the inflate loop in the "get_data()" function).
Linus