On Mon, Jun 22, 2015 at 04:38:22AM -0400, Jeff King wrote:
> > + prepare_packed_git();
> > + for (p = packed_git; p; p = p->next) {
> > + open_pack_index(p);
> > + }
>
> Yikes. The fact that you need to do this means that
> for_each_packed_object is buggy, IMHO. I'll send a patch.
Here's that patch. And since I did not want to pile work on Charles, I
went ahead and just implemented the patches I suggested in the other
email.
We may want to take patch 1 separately for the maint-track, as it is
really a bug-fix (albeit one that I do not think actually affects anyone
in practice right now).
Patches 2-5 are useful even if we go with Charles' command, as they make
cat-file better (cleanups and he new buffer option).
Patches 6-7 implement the cat-file option that would be redundant with
list-all-objects.
By the way, in addition to not showing objects in order,
list-all-objects (and my cat-file option) may show duplicates. Do we
want to "sort -u" for the user? It might be nice for them to always get
a de-duped and sorted list. Aside from the CPU cost of sorting, it does
mean we'll allocate ~80MB for the kernel to store the sha1s. I guess
that's not too much when you are talking about the kernel repo. I took
the coward's way out and just mentioned the limitation in the
documentation, but I'm happy to be persuaded.
[1/7]: for_each_packed_object: automatically open pack index
[2/7]: cat-file: minor style fix in options list
[3/7]: cat-file: move batch_options definition to top of file
[4/7]: cat-file: add --buffer option
[5/7]: cat-file: stop returning value from batch_one_object
[6/7]: cat-file: split batch_one_object into two stages
[7/7]: cat-file: add --batch-all-objects option
-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in