On Sun, Jul 07, 2013 at 10:49:46AM -0700, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > Perhaps we need > > > > git cat-file --batch-format="%(disk-size) %(object)" > > > > or similar. > > I agree with your reasoning. It may be simpler to give an interface > to ask for which pieces of info, e.g. --batch-cols=size,disksize, > without giving the readers a flexible "format". Yeah, that is probably a lot more sane. That would be sufficient for my use, I doubt anyone really wants the full format, and it would be easy to add it later if we are wrong. It would also be easy to add other items from the sha1_object_info_extended list, too (e.g., loose/cached/packed). I'll do that in my re-roll. > > +NOTE: The on-disk size reported is accurate, but care should be taken in > > +drawing conclusions about which refs or objects are responsible for disk > > +usage. [...] > > This is a good note to leave to the readers. I was wondering how > valid to accuse that B is taking a lot of space compared to C when > you have three objects A, B and C (in decreasing order of on-disk > footprint) when A is huge and C is a small delta against A and B is > independent. The role of A and C in their delta chain could easily > be swapped during the next full repack and then C will appear a lot > larger than B. Yeah. I exercise a lot of human analysis when I use this tool myself. What I am usually looking for is that somebody has forked a 100M repo, and then dumped 2G of extra data on top. Those cases are not all that hard to spot, and would not usually change too much in a repack. > It might be interesting to measure the total disk footprint of an > entire delta "family" (the objects that delta against the same > base). You may find out that hello.c with a manageable size have > very many revisions and overall have a larger on-disk footprint than > a single copy of unchanging help.mov clip used in the documentation > does, which may be an interesting observation to make. Yeah, that is an interesting stat, though I have not had a need for it myself. Certainly you could do: git rev-list --objects --all | grep ' hello.c$' | cut -d' ' -f1 | git cat-file --batch-disk-sizes to see hello.c's size. But I cannot think offhand of a way to get the list of objects that are in a delta chain together (potentially crossing path boundaries), short of parsing verfiy-pack output myself. I think it is orthogonal to this patch, though. This exposes more information about objects themselves; it would be up to another patch to help discover and narrow the list of interesting objects. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html