From: Junio C Hamano Date: Tue, 28 Jun 2005 03:33:20 GMT Subject: Re: [PATCH] Skip writing out sha1 files for objects in packed git. Message-ID: <7vekanyx33.fsf@assigned-by-dhcp.cox.net> In-Reply-To: >>>>> "LT" == Linus Torvalds writes: LT> If we want to expand a packed file and really write the objects to the LT> .git/objects directories, we should just not have that packed file in the LT> .git/objects/pack directory. What I was aiming for was this: (1) Introduce an interface to sha1_file.c that lets you say "use this file as one of the packs, although it is not under .git/objects/pack"; (2) Introduce another interface to sha1_file.c that lets you enumerate the index entries for a given pack file. (3) Remove the unpacking logic from unpack-object.c; instead call the above interfaces to register the pack and enumerate entries, and call read_sha1_file() followed by write_sha1_file() with do_expand repeatedly. However, the infrastructure (1) and (2) may end up being a special case only to support unpack-object (and removing the code duplication for unpacking), in which case what you suggest would make more sense. LT> And if we have a pack-file in .git/objects/ that already has LT> the object, that may not be the _same_ pack-file that we're LT> expanding at all, so if that pack file already has the LT> object, then not writing it out is actually the right thing LT> to do. This I have to think about a bit.