Re: CAREFUL! No more delta object support!
From: Linus Torvalds <torvalds@osdl.org>
Date: 2016-06-15 22:42:01
On Tue, 28 Jun 2005, Linus Torvalds wrote:
quoted
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