The management of multiple packs and strategy of deciding when
to create the next incremental (be it throw-away or permanent)
is something I am not particularly interested in at this moment,
and as you correctly pointed out, the "single throw-away pack"
is an example of _bad_ strategy [*1*]. I am more interested in
designing a concise way to express what the server side has
(after applying such packing/repacking strategy) to help clients
coming over a dumb transport.
One thing that I forgot to mention is that there is another
per-repository information "$repo/info/revinfo". This lists all
the commit ancestry reachable from "$repo/refs", and is needed
for clients to find out the closest commit from the very tip of
branches, which are likely not packed yet, that appears as a
head in "$repo/objects/info/pack" and go from there.
*1* As I said, I am not interested in thinking about this at
this moment, but I suspect a scheme that employs the base pack,
permanent incrementals, and N new throw-aways every day for the
N-th day of the month may work reasonably well.
On the N-th day of the month, you create incrementals relative
to what existed on the N-1th, N-2th, ..., 1st of the month. At
the end of the day, create N+1 new throw-aways for the N+1th day
of the month (you can garbage collect older days' throw-away
incrementals whenever you like). At the end of the month, you
mark the throw-away incremental that is relative to the
beginning of the month as the latest permanent incremental.
Bootstrappers can slurp base, permanent incremental and the
throwaway for today that is relative to the last permanent
incremental. Updaters can pick the one relative to the day they
updated last time.
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