I have a design for using http-pull on a packed repository, and it only requires one extra file in the repository: an append-only list of the pack files (because getting the directory listing is very painful and failure-prone).
The first thing to note is that fetch() is allowed to get more than just the requested object. This means that we can get the pack file with the requested object, and this will fulfill the contract of fetch(), and, hopefully, be extra-helpful (since we expect the repository owner to have packed stuff together usefully). So I do this: Try to get individual files. So long as this works, everything is as before. If an individual file is not available, figure out what packs are available: Get the list of pack files the repository has (currently, I just use "e3117bbaf6a59cb53c3f6f0d9b17b9433f0e4135") For any packs we don't have, get the index files. Keep a list of the struct packed_gits for the packs the server has (these are not used as places to look for objects) Each time we need an object, check the list for it. If it is in there, download the corresponding pack and report success. I've nearly got an implementation ready, except for not having a way of getting a list of available packs. It seems to work for getting e3117bbaf6a59cb53c3f6f0d9b17b9433f0e4135 when necessary, although I'm still debugging the last few things. -Daniel *This .sig left intentionally blank* - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html