From: Jonathan Tan <jonathantanmy@google.com> To: git@vger.kernel.org Cc: Jonathan Tan <jonathantanmy@google.com> Subject: [PATCH 0/6] Push negotiation Date: Thu, 8 Apr 2021 18:09:57 -0700 [thread overview] Message-ID: <cover.1617929278.git.jonathantanmy@google.com> (raw) Here are patches for push negotiation. The basic idea is that we can reuse part of the fetch protocol (and code) to find out what is in common between the client and server, and then use that information to further narrow the objects sent in the packfile during a push. Patch 1 is a bug fix that probably should be merged even if the rest aren't. Patches 2-4 are refactorings in preparation for the future patches. Patches 5-6 contain the actual logic and documentation. I have written more about it in my prior work [1], although the commit messages and documentation in patches 5-6 should be enough to explain what's going on. (If they're not, feel free to make review comments.) The main change from [1] is that the client-side code that used to be in builtin/fetch-pack.c is now in builtin/fetch.c, because I realized that builtin/fetch-pack.c does not support HTTP. Other than that, all the "what hasn't been done yet" items have been done except for statistics in the commit message. [1] https://lore.kernel.org/git/20210218012100.928957-1-jonathantanmy@google.com/ Jonathan Tan (6): fetch-pack: buffer object-format with other args fetch-pack: refactor process_acks() fetch-pack: refactor add_haves() fetch-pack: refactor command and capability write fetch: teach independent negotiation (no packfile) send-pack: support push negotiation Documentation/config/push.txt | 7 + Documentation/technical/protocol-v2.txt | 8 + builtin/fetch.c | 27 ++- fetch-pack.c | 224 +++++++++++++++--------- fetch-pack.h | 11 ++ object.h | 2 +- send-pack.c | 61 ++++++- t/t5516-fetch-push.sh | 35 ++++ t/t5701-git-serve.sh | 2 +- t/t5702-protocol-v2.sh | 89 ++++++++++ transport-helper.c | 10 ++ transport.c | 30 +++- transport.h | 6 + upload-pack.c | 18 +- 14 files changed, 430 insertions(+), 100 deletions(-) -- 2.31.1.295.g9ea45b61b8-goog
next reply other threads:[~2021-04-09 1:10 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-09 1:09 Jonathan Tan [this message] 2021-04-09 1:09 ` [PATCH 1/6] fetch-pack: buffer object-format with other args Jonathan Tan 2021-04-09 4:49 ` Junio C Hamano 2021-04-09 16:24 ` Jonathan Tan 2021-04-09 1:09 ` [PATCH 2/6] fetch-pack: refactor process_acks() Jonathan Tan 2021-04-09 5:08 ` Junio C Hamano 2021-05-03 16:30 ` Derrick Stolee 2021-04-09 1:10 ` [PATCH 3/6] fetch-pack: refactor add_haves() Jonathan Tan 2021-04-09 5:20 ` Junio C Hamano 2021-04-09 1:10 ` [PATCH 4/6] fetch-pack: refactor command and capability write Jonathan Tan 2021-04-09 5:27 ` Junio C Hamano 2021-04-09 1:10 ` [PATCH 5/6] fetch: teach independent negotiation (no packfile) Jonathan Tan 2021-04-09 5:41 ` Junio C Hamano 2021-04-09 16:38 ` Jonathan Tan 2021-05-03 15:25 ` Derrick Stolee 2021-05-03 15:40 ` Derrick Stolee 2021-05-03 21:52 ` Jonathan Tan 2021-04-09 1:10 ` [PATCH 6/6] send-pack: support push negotiation Jonathan Tan 2021-05-03 15:35 ` Derrick Stolee 2021-05-03 22:02 ` Jonathan Tan 2021-05-04 17:26 ` Derrick Stolee 2021-04-30 5:42 ` [PATCH 0/6] Push negotiation Junio C Hamano 2021-04-30 17:33 ` Derrick Stolee 2021-05-04 21:15 ` [PATCH v2 0/5] " Jonathan Tan 2021-05-04 21:15 ` [PATCH v2 1/5] fetch-pack: refactor process_acks() Jonathan Tan 2021-05-04 21:15 ` [PATCH v2 2/5] fetch-pack: refactor add_haves() Jonathan Tan 2021-05-04 21:16 ` [PATCH v2 3/5] fetch-pack: refactor command and capability write Jonathan Tan 2021-05-04 21:16 ` [PATCH v2 4/5] fetch: teach independent negotiation (no packfile) Jonathan Tan 2021-05-05 1:53 ` Junio C Hamano 2021-05-05 16:42 ` Derrick Stolee 2021-05-06 2:12 ` Junio C Hamano 2021-05-05 16:44 ` Derrick Stolee 2021-05-04 21:16 ` [PATCH v2 5/5] send-pack: support push negotiation Jonathan Tan
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.1617929278.git.jonathantanmy@google.com \ --to=jonathantanmy@google.com \ --cc=git@vger.kernel.org \ --subject='Re: [PATCH 0/6] Push negotiation' \ /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
Code repositories for project(s) associated with this 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).