On Tue, 28 Jun 2005, Linus Torvalds wrote: > > > 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Wed Jun 29 13:52:36 2005
This archive was generated by hypermail 2.1.8 : 2005-06-29 13:52:41 EST