Re: push race

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: push race

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:55:02

Nguyen Thai Ngoc Duy [off-list ref] writes:
On Tue, Oct 16, 2012 at 12:37 PM, Jeff King [off-list ref] wrote:
quoted
I suspect a site that is heavy on alternates is invoking the index-pack
code path more frequently than necessary (e.g., history gets pushed to
one forked repo, then when it goes to the next one, we may not share the
ref that tells the client we already have the object and receive it a
second time).
I suppose we could do the way unpack-objects does: prefer present
objects and drop the new identical ones, no memcmp. Objects that are
not bases, or are ref-delta bases, can be safely dropped. ofs-delta
bases may lead to rewriting the pack. Do-able but not sure it's worth
the effort.
Until you read all the incoming pack data, you won't know what
objects are used as bases for others, so unless you are keeping
everything in core, you would have to spool the incoming data to a
file and then rewrite the final pack file to "drop" these "can be
safely dropped" objects, with or without offset delta encoding.

Re: push race

From: Jeff King <hidden>
Date: 2016-06-15 22:55:02

On Tue, Oct 16, 2012 at 10:21:02AM -0700, Junio C Hamano wrote:
quoted
I suppose we could do the way unpack-objects does: prefer present
objects and drop the new identical ones, no memcmp. Objects that are
not bases, or are ref-delta bases, can be safely dropped. ofs-delta
bases may lead to rewriting the pack. Do-able but not sure it's worth
the effort.
Until you read all the incoming pack data, you won't know what
objects are used as bases for others, so unless you are keeping
everything in core, you would have to spool the incoming data to a
file and then rewrite the final pack file to "drop" these "can be
safely dropped" objects, with or without offset delta encoding.
By definition, you know that you have another copy of these objects
(that is why you are dropping them). So you could treat later delta
references to them the same as thin-pack references, and re-add your
existing on-disk copy of the object to the end of the pack.

But still...the complexity is ugly, and we do not even have a measured
problem in the real world. This is not worth thinking about. :)

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help