[RFC PATCH v2 28/36] serve: understand but do not advertise 'features' capability
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Apr 18, 2022, 17:23 UTC
- Message-ID
- <RFC-patch-v2-28.36-145c660ca52-20220418T165545Z-avarab@gmail.com>
- In-Reply-To
- <RFC-cover-v2-00.36-00000000000-20220418T165545Z-avarab@gmail.com>
From: Derrick Stolee <derrickstolee@github.com>
The previous change implemented cap_features() to return a set of 'key=value' pairs when this capability is run. Add the capability to our list of understood capabilities.
This change does not advertise the capability. When deploying a new capability to a distributed fleet of Git servers, it is important to delay advertising the capability until all nodes understand it. A later change will advertise it when appropriate, but as a separate change to simplify this transition.
Signed-off-by: Derrick Stolee <derrickstolee@github.com> --- serve.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/serve.c b/serve.c index f3e0203d2c6..3368d16efda 100644 --- a/serve.c +++ b/serve.c @@ -19,6 +19,12 @@ static int always_advertise(struct repository *r, return 1; } +static int never_advertise(struct repository *r, + struct strbuf *value) +{ + return 0; +} + static int agent_advertise(struct repository *r, struct strbuf *value) { @@ -113,6 +119,11 @@ static struct protocol_capability capabilities[] = { .advertise = ls_refs_advertise, .command = ls_refs, }, + { + .name = "features", + .advertise = never_advertise, + .command = cap_features, + }, { .name = "fetch", .advertise = upload_pack_advertise,
-- 2.36.0.rc2.902.g60576bbc845