From: Jonathan Nieder <jrnieder@gmail.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Brandon Williams <bwilliamseng@gmail.com>,
Jonathan Tan <jonathantanmy@google.com>
Subject: Re: [PATCH 1/3] serve: pass "config context" through to individual commands
Date: Fri, 14 Dec 2018 01:28:20 -0800 [thread overview]
Message-ID: <20181214092820.GB7121@google.com> (raw)
In-Reply-To: <20181214085507.GD11777@sigill.intra.peff.net>
Jeff King wrote:
> On Fri, Dec 14, 2018 at 12:36:21AM -0800, Jonathan Nieder wrote:
>> Jeff King wrote:
>>> In protocol v2, instead of just running "upload-pack", we have a generic
>>> "serve" loop which runs command requests from the client. What used to
>>> be "upload-pack" is now generally split into two operations: "ls-refs"
>>> and "fetch". The latter knows it must respect uploadpack.* config, but
>>> the former is not actually specific to a fetch operation (we do not yet
>>> do v2 receive-pack, but eventually we may, and ls-refs would support
>>> both operations).
>>
>> I think I'm missing something. Why wouldn't "ls-refs for push" not pass
>> the information that it's for push as part of the *body* of the ls-refs
>> request?
>
> I don't know. Why doesn't the current "ls-refs" say "ls-refs for fetch"?
Also YAGNI. ;-)
In other words, since the design for push isn't set in stone yet, we had
nothing to be consistent with. And if there's an option to ls-ref to
indicate whether it's for fetch or for push, then it can default to
fetch.
As an aside, my experience from teaching people about Git protocol is
that the concept of "ls-remote for push" producing a different result
from "git ls-remote" is very confusing. Given what it is used for, I am
motivated to replace it with something more tailored.
> Certainly if that information was carried from the client request it
> would work fine, and ls-refs would have enough to know which config to
> respect. But I could not find any documentation on this, nor discussion
> of plans for a v2 push.
Interesting. The last discussion of push v2 plans was in
https://public-inbox.org/git/20180717210915.139521-1-bmwill@google.com/.
Expect to hear more soon.
> Since that information isn't passed now, we'd
> have to assume that "ls-refs" without "for-push" always means "for
> fetch".
>
> I'm conceptually OK with that, but if that is the plan for going
> forward, it was not at all obvious to me (and it does feel rather
> implicit).
Don't get me wrong: I haven't wrapped my head around config context
and how it fits into the broader picture yet, but it may be a very
good thing to have. So please consider this comment to be about the
commit message only.
Based on the motivation you're describing here, I think treating it as
uploadpack and adding a NEEDSWORK comment would be a good way forward.
If we're moving toward a world with more protocol commands that don't
fit in the upload-pack / receive-pack categories, then we need to
figure out in more detail what that world looks like:
- do we keep on adding new endpoints, in the same spirit as
upload-archive? If so, what endpoint should a client use to get
capabilities before it decides which endpoint to use?
- do we merge everything in "git serve" except where a specific
endpoint is needed for protocol v0 compatibility? That would lose
the ability to distinguish fetches from pushes without looking at
the body of requests (which is useful to some people for monitoring,
blocking, etc) --- do we consider that to be an acceptable loss?
- once we've decided what the future should look like, how does the
transition to that future look?
>> Is there some other more immediate motivation for this patch? In the
>> spirit of YAGNI, I would rather understand that motivation instead of
>> one that in many possible designs would never materialize.
>
> Without this information, in patch 3 ls-refs cannot know to look at
> uploadpack.hiderefs, unless it makes the implicit assumption that it is
> always serving a fetch.
I think that's a reasonable assumption to make, especially if made
explicit using a simple comment. :)
Thanks for explaining,
Jonathan
next prev parent reply other threads:[~2018-12-14 9:28 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-11 10:42 [PATCH 0/3] protocol v2 and hidden refs Jeff King
2018-12-11 10:43 ` [PATCH 1/3] serve: pass "config context" through to individual commands Jeff King
2018-12-14 2:09 ` Junio C Hamano
2018-12-14 8:20 ` Jeff King
2018-12-15 0:31 ` Junio C Hamano
2018-12-16 10:25 ` Jeff King
2018-12-16 11:12 ` Junio C Hamano
2018-12-18 12:47 ` Jeff King
2018-12-14 8:36 ` Jonathan Nieder
2018-12-14 8:55 ` Jeff King
2018-12-14 9:28 ` Jonathan Nieder [this message]
2018-12-14 9:55 ` Jeff King
2018-12-11 10:43 ` [PATCH 2/3] parse_hide_refs_config: handle NULL section Jeff King
2018-12-14 2:11 ` Junio C Hamano
2018-12-11 10:44 ` [PATCH 3/3] upload-pack: support hidden refs with protocol v2 Jeff King
2018-12-11 11:45 ` [PATCH 0/3] protocol v2 and hidden refs Ævar Arnfjörð Bjarmason
2018-12-11 13:55 ` Jeff King
2018-12-11 21:21 ` [PATCH 0/3] Add a GIT_TEST_PROTOCOL_VERSION=X test mode Ævar Arnfjörð Bjarmason
2018-12-11 21:24 ` Ævar Arnfjörð Bjarmason
2018-12-11 21:21 ` [PATCH 1/3] tests: add a special setup where for protocol.version Ævar Arnfjörð Bjarmason
2018-12-12 0:27 ` [PATCH 0/3] Some fixes and improvements Jonathan Tan
2018-12-12 0:27 ` [PATCH 1/3] squash this into your patch Jonathan Tan
2018-12-12 0:27 ` [PATCH 2/3] builtin/fetch-pack: support protocol version 2 Jonathan Tan
2018-12-12 0:27 ` [PATCH 3/3] also squash this into your patch Jonathan Tan
2018-12-13 2:49 ` [PATCH 0/3] Some fixes and improvements Junio C Hamano
2018-12-13 15:58 ` [PATCH v2 0/8] protocol v2 fixes Ævar Arnfjörð Bjarmason
2018-12-17 22:40 ` [PATCH v3 0/4] " Ævar Arnfjörð Bjarmason
2018-12-18 12:48 ` Jeff King
2018-12-17 22:40 ` [PATCH v3 1/4] serve: pass "config context" through to individual commands Ævar Arnfjörð Bjarmason
2018-12-17 22:40 ` [PATCH v3 2/4] parse_hide_refs_config: handle NULL section Ævar Arnfjörð Bjarmason
2018-12-17 22:40 ` [PATCH v3 3/4] upload-pack: support hidden refs with protocol v2 Ævar Arnfjörð Bjarmason
2018-12-17 22:40 ` [PATCH v3 4/4] fetch-pack: support protocol version 2 Ævar Arnfjörð Bjarmason
2019-01-08 19:45 ` Junio C Hamano
2019-01-08 20:38 ` Jonathan Tan
2019-01-08 21:14 ` Jeff King
2018-12-13 15:58 ` [PATCH v2 1/8] serve: pass "config context" through to individual commands Ævar Arnfjörð Bjarmason
2018-12-13 15:58 ` [PATCH v2 2/8] parse_hide_refs_config: handle NULL section Ævar Arnfjörð Bjarmason
2018-12-13 15:58 ` [PATCH v2 3/8] upload-pack: support hidden refs with protocol v2 Ævar Arnfjörð Bjarmason
2018-12-13 15:58 ` [PATCH v2 4/8] tests: add a check for unportable env --unset Ævar Arnfjörð Bjarmason
2018-12-13 15:58 ` [PATCH v2 5/8] tests: add a special setup where for protocol.version Ævar Arnfjörð Bjarmason
2018-12-13 19:48 ` Jonathan Tan
2018-12-13 15:58 ` [PATCH v2 6/8] tests: mark & fix tests broken under GIT_TEST_PROTOCOL_VERSION=1 Ævar Arnfjörð Bjarmason
2018-12-13 15:58 ` [PATCH v2 7/8] builtin/fetch-pack: support protocol version 2 Ævar Arnfjörð Bjarmason
2018-12-14 10:17 ` Jeff King
2018-12-13 15:58 ` [PATCH v2 8/8] tests: mark tests broken under GIT_TEST_PROTOCOL_VERSION=2 Ævar Arnfjörð Bjarmason
2018-12-13 16:08 ` Ævar Arnfjörð Bjarmason
2018-12-14 2:18 ` Junio C Hamano
2018-12-14 10:12 ` Jeff King
2018-12-14 10:55 ` Ævar Arnfjörð Bjarmason
2018-12-14 11:08 ` Ævar Arnfjörð Bjarmason
2018-12-17 19:59 ` Jeff King
2018-12-17 19:57 ` Jeff King
2018-12-17 22:16 ` [PATCH] upload-pack: turn on uploadpack.allowAnySHA1InWant=true Ævar Arnfjörð Bjarmason
2018-12-17 22:34 ` David Turner
2018-12-17 22:57 ` Ævar Arnfjörð Bjarmason
2018-12-17 23:07 ` David Turner
2018-12-17 23:14 ` [PATCH v2 8/8] tests: mark tests broken under GIT_TEST_PROTOCOL_VERSION=2 Jonathan Nieder
2018-12-17 23:36 ` Ævar Arnfjörð Bjarmason
2018-12-18 0:02 ` Jonathan Nieder
2018-12-18 9:28 ` Ævar Arnfjörð Bjarmason
2018-12-18 12:41 ` Jeff King
2018-12-18 12:36 ` Jeff King
2018-12-18 13:10 ` Ævar Arnfjörð Bjarmason
2018-12-26 22:14 ` Junio C Hamano
2018-12-27 11:26 ` Ævar Arnfjörð Bjarmason
2018-12-27 17:10 ` Jonathan Nieder
2018-12-11 21:21 ` [PATCH 2/3] tests: mark tests broken under GIT_TEST_PROTOCOL_VERSION=1 Ævar Arnfjörð Bjarmason
2018-12-11 21:21 ` [PATCH 3/3] tests: mark tests broken under GIT_TEST_PROTOCOL_VERSION=2 Ævar Arnfjörð Bjarmason
2018-12-13 19:53 ` [PATCH 0/3] protocol v2 and hidden refs Jonathan Tan
2018-12-14 8:35 ` Jeff King
2018-12-15 19:53 ` Ævar Arnfjörð Bjarmason
2018-12-16 10:40 ` Jeff King
2018-12-16 11:47 ` Ævar Arnfjörð Bjarmason
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=20181214092820.GB7121@google.com \
--to=jrnieder@gmail.com \
--cc=bwilliamseng@gmail.com \
--cc=git@vger.kernel.org \
--cc=jonathantanmy@google.com \
--cc=peff@peff.net \
/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).