Re: getting list of objects for packing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux