From: Jonathan Tan <jonathantanmy@google.com>
To: git@vger.kernel.org
Cc: Jonathan Tan <jonathantanmy@google.com>
Subject: [PATCH 0/4] "Push" protocol change proposal: user-specified base
Date: Mon, 2 Nov 2020 16:26:09 -0800 [thread overview]
Message-ID: <cover.1604362701.git.jonathantanmy@google.com> (raw)
At $DAY_JOB, we've noticed some pushes being larger than necessary.
Here's a first step towards solving that. In this protocol change, we're
allowing the user to specify an ancestor believed to be common; if the
server agrees, the server sends that ancestor as the lone so-called ref
being advertised instead of the full ref advertisement. Not only does
this save bandwidth for the ref advertisement, but this avoids the issue
of the server's refs being ahead of the client (and thus the client
cannot use them since it is unaware of those objects).
More information (including a design doc) can be found in the
documentation patch.
This works for file://, ssh://, and http(s)://.
One last concern I had is the locations of the tests - I just bundled
the protocol v0 ones with their corresponding protocol v1 ones, as I
couldn't find good places to put them.
Jonathan Tan (4):
connect: refactor building of Extra Parameters
push: teach --base for ssh:// and file://
remote-curl: teach --base for http(s)://
Doc: push with --base
Documentation/gitremote-helpers.txt | 8 ++
Documentation/technical/pack-protocol.txt | 10 +-
Documentation/technical/push-with-base.txt | 61 ++++++++++++
builtin/fetch-pack.c | 2 +-
builtin/push.c | 12 ++-
builtin/receive-pack.c | 46 ++++++++-
builtin/send-pack.c | 2 +-
builtin/upload-pack.c | 2 +-
connect.c | 39 +++++---
connect.h | 4 +-
http-backend.c | 2 +-
protocol.c | 5 +-
protocol.h | 5 +-
remote-curl.c | 25 +++--
t/t5700-protocol-v1.sh | 110 +++++++++++++++++++++
transport-helper.c | 15 +++
transport.c | 14 ++-
transport.h | 9 ++
18 files changed, 332 insertions(+), 39 deletions(-)
create mode 100644 Documentation/technical/push-with-base.txt
--
2.29.1.341.ge80a0c044ae-goog
next reply other threads:[~2020-11-03 0:26 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-03 0:26 Jonathan Tan [this message]
2020-11-03 0:26 ` [PATCH 1/4] connect: refactor building of Extra Parameters Jonathan Tan
2020-11-03 0:26 ` [PATCH 2/4] push: teach --base for ssh:// and file:// Jonathan Tan
2020-11-03 10:23 ` SZEDER Gábor
2020-11-08 19:31 ` Junio C Hamano
2020-11-03 13:57 ` Derrick Stolee
2020-11-08 19:30 ` Junio C Hamano
2020-11-03 0:26 ` [PATCH 3/4] remote-curl: teach --base for http(s):// Jonathan Tan
2020-11-03 1:13 ` Junio C Hamano
2020-11-03 0:26 ` [PATCH 4/4] Doc: push with --base Jonathan Tan
2020-11-03 5:35 ` Jonathan Nieder
2020-11-03 15:18 ` Jeff King
2020-11-03 17:35 ` Junio C Hamano
2020-11-09 19:56 ` Jonathan Tan
2020-11-09 21:00 ` Derrick Stolee
2020-11-09 22:22 ` Jonathan Tan
2020-11-09 21:20 ` Junio C Hamano
2020-11-09 21:40 ` Jeff King
2020-11-09 22:47 ` Jonathan Tan
2020-11-03 13:53 ` Derrick Stolee
2020-11-03 0:46 ` [PATCH 0/4] "Push" protocol change proposal: user-specified base Junio C Hamano
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1604362701.git.jonathantanmy@google.com \
--to=jonathantanmy@google.com \
--cc=git@vger.kernel.org \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).