From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Erik van Zijst <erik.van.zijst@gmail.com>,
git@vger.kernel.org, ssaasen@atlassian.com,
mheemskerk@atlassian.com
Subject: Re: [ANNOUNCE] Git Merge Contributor Summit topic planning
Date: Wed, 01 Feb 2017 13:35:10 -0800 [thread overview]
Message-ID: <xmqqd1f1oar5.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20170201212825.advj7f3ucnfbspbj@sigill.intra.peff.net> (Jeff King's message of "Wed, 1 Feb 2017 22:28:26 +0100")
Jeff King <peff@peff.net> writes:
> For instance, if the server knew that XYZ meant
>
> - send bytes m through n of packfile p, then...
>
> - send the object at position i of packfile p, as a delta against the
> object at position j of packfile q
>
> - ...and so on
>
> Then you could store very small "instruction sheets" for each XYZ that
> rely on the data in the packfiles. If those packfiles go away (e.g., due
> to a repack) that invalidates all of your current XYZ tags. That's OK as
> long as this is an optimization, not a correctness requirement.
Yes. You can play optimization games.
>> So in the real life, I think that the exchange needs to be more
>> like this:
>>
>> C: I need a packfile with this want/have
>> ... C/S negotiate what "have"s are common ...
>> S: Sorry, but our negitiation indicates that you are way too
>> behind. I'll send you a packfile that brings you up to a
>> slightly older set of "want", so pretend that you asked for
>> these slightly older "want"s instead. The opaque id of that
>> packfile is XYZ. After getting XYZ, come back to me with
>> your original set of "want"s. You would give me more recent
>> "have" in that request.
>> ... connection interrupted ...
>> C: It's me again. I have up to byte N of pack XYZ
>> S: OK, resuming (or: I do not have it anymore, start from scratch)
>> ... after 0 or more iterations C fully receives and digests XYZ ...
>>
>> and then the above will iterate until the server does not have to
>> say "Sorry but you are way too behind" and returns a packfile
>> without having to tweak the "want".
>
> Yes, I think that is a reasonable variant. The client knows about
> seeding, but the XYZ conversation continues to happen inside the git
> protocol. So it loses flexibility versus a true CDN redirection, but it
> would "just work" when the server/client both understand the feature,
> without the server admin having to set up a separate bundle-over-http
> infrastructure.
You can also do a CDN offline as a natural extension. When the
server says "Sorry, you are way too behind.", the above example
tells "I'll update you to a slightly stale version first" to the
client. An natural extension could say "Go update yourself to a
slightly stale version first by grabbing that bundle over there."
But I agree that doing everything in-line may be a logical and
simpler first step to get there.
next prev parent reply other threads:[~2017-02-01 21:35 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-31 0:48 [ANNOUNCE] Git Merge Contributor Summit topic planning Jeff King
2017-01-31 0:59 ` Jeff King
2017-02-01 19:51 ` Christian Couder
2017-02-01 9:32 ` Erik van Zijst
2017-02-01 14:53 ` Jeff King
2017-02-01 18:06 ` Junio C Hamano
2017-02-01 21:28 ` Jeff King
2017-02-01 21:35 ` Junio C Hamano [this message]
2017-02-01 20:37 ` Stefan Beller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqd1f1oar5.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=erik.van.zijst@gmail.com \
--cc=git@vger.kernel.org \
--cc=mheemskerk@atlassian.com \
--cc=peff@peff.net \
--cc=ssaasen@atlassian.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).