On Fri, 31 Oct 2008, Brandon Casey wrote: > > I'm trying to write a script that will repack large binary or compressed > objects into their own non-compressed, non-delta'ed pack file. > > To make the decision about whether an object should go into this special > pack file or not, I want the output from 'git cat-file --batch-check'. > I get it with something similar to: > > git rev-list --objects --all | > sed -e 's/^\([0-9a-f]\{40\}\).*/\1/' | > git cat-file --batch-check > > First question: Is the rev-list call correct? yes. > -If I am understanding things right, then the list of objects produced > by rev-list will be in the right order for piping to pack-objects. > -The sed statement is stripping off anything after the sha1. Any way to > get rev-list to print out just the sha1 so that sed is not necessary? If you strip the data after the SHA1 when pipping into pack-objects then you'll have horrible delta compression results. The path names after each SHA1 is used to sort objects when trying to find best matches for delta compression. So you should preserve those and feed it back especially with those packs that you still want delta compression for. > ISSUE TWO: > > I have placed these two packs into my own personal repo, and I have unpacked all > of the other objects so that they are loose. > > I thought I could use a similar sequence of commands to pack those loose objects > into a normal and special pack. I added the --unpacked option to my rev-list > command, but it still lists many more objects than exist loosely in the repository. > > git rev-list --objects --unpacked --all > > The man page says: > > --objects > Print the object IDs of any object referenced by the listed > commits. --objects foo ^bar thus means "send me all object IDs > which I need to download if I have the commit object bar, but > not foo". > > --unpacked > Only useful with --objects; print the object IDs that are not > in packs. > > Is this the correct behavior for rev-list --unpacked? Well, don't think so. Although I have zero unpacked objects in my git repository, the listing still gives me a hundred objects or so, and they all appear to be tag objects. There is probably a bug here. Nicolas -- 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