From patchwork Wed Jun 16 14:16:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12325337 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ADBB6C48BE5 for ; Wed, 16 Jun 2021 14:16:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8164061076 for ; Wed, 16 Jun 2021 14:16:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233970AbhFPOSl (ORCPT ); Wed, 16 Jun 2021 10:18:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233880AbhFPOSi (ORCPT ); Wed, 16 Jun 2021 10:18:38 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B816AC061574 for ; Wed, 16 Jun 2021 07:16:31 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id c9so2890635wrt.5 for ; Wed, 16 Jun 2021 07:16:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8W1wC6kB9+MgUxQnjMREBVFkhtrduzY/fVU4ybz4Lw8=; b=UqGp5zVzA8DtNEb6b4JxrQWy+p1HMxtZ8BgxZzVcAMvaun1FnrA8uo+y2SnhsszgAr x+tf3CruR5gJfrr6/7GsehskKNlsC8nGvgmJJVS2sJsiC2dFjf4+raUldYOUhllBXdZA JTbsGHKqVfBZtv/ny4zxGg7cl0eBfQpQXNC5GnymmDlgstQKeEIxm4Wyy3lzzThIzkQE /xl+B6banMKZG1Org7e/J7hBmP1wqGjS6TUr2TOHXER+BBwn6pRAoJfntJp4qQBPsuAy zbt1aCHdOJZaoYimbJJbVin3rqco9ooxbtAuxRNwQpr8WwcMbHGJeDCVmIHQL1kU6ZfR HJ0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8W1wC6kB9+MgUxQnjMREBVFkhtrduzY/fVU4ybz4Lw8=; b=GdQHubneQtWVk7x+z5I4KmvbzLFx9rEQhSsQHWYS8SWVdAA0qbVNMTRoCP9PEeHQBn XOFiFyLhUB5yVVbcbD53kX7TLnBDD87oIkQiI6CwHE4WYb+78afFwgUWU4KDhFQ3R+Ib 1M45ILXGbqscHzYlK+13hLYrhNxuEmxxYi5RsJQaazYJtOuBVazoXPCqgJkD9HmaQpAw wQKceHzHXyMsKAo2kTWauOCvidSr4m2WKDOVgtpuFU09nY68gFQ3kIUAbqy8tk7tacU6 lNOJr8H32iMtLHFj3lQ2MkwkpReNtbVoBujO3wauDRAJlESqdD4G6K4v+Gx75knZy9j+ JKBQ== X-Gm-Message-State: AOAM533si8uKS9fxX+p03xXCW++Ey8fmkEgqsJtxJuwRTKX35ccmJgUa h4roSpLE6QrRhLMyxLB2YkKYpWEqJtMNSQ== X-Google-Smtp-Source: ABdhPJxUWMJqvuMnvp+WoHqCAQEdMgbJ9WaXvxEywK9BSdfBSidQq4uc3ROgLtPSgWSIwDV0B/zSPw== X-Received: by 2002:adf:bd88:: with SMTP id l8mr5688771wrh.90.1623852990182; Wed, 16 Jun 2021 07:16:30 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id a9sm2258555wrv.37.2021.06.16.07.16.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 07:16:29 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Jonathan Tan , Josh Steadmon , Bruno Albuquerque , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFy?= =?utf-8?b?bWFzb24=?= Subject: [PATCH 1/5] serve: mark has_capability() as static Date: Wed, 16 Jun 2021 16:16:17 +0200 Message-Id: X-Mailer: git-send-email 2.32.0.576.g59759b6ca7d In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The has_capability() function introduced in ed10cb952d3 (serve: introduce git-serve, 2018-03-15) has never been used anywhere except serve.c, so let's mark it as static. It was later changed from "extern" in 554544276a6 (*.[ch]: remove extern from function declarations using spatch, 2019-04-29), but we could have simply marked it as "static" instead. Signed-off-by: Ævar Arnfjörð Bjarmason --- serve.c | 4 ++-- serve.h | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/serve.c b/serve.c index aa8209f147e..6748c590b74 100644 --- a/serve.c +++ b/serve.c @@ -156,8 +156,8 @@ static int is_command(const char *key, struct protocol_capability **command) return 0; } -int has_capability(const struct strvec *keys, const char *capability, - const char **value) +static int has_capability(const struct strvec *keys, const char *capability, + const char **value) { int i; for (i = 0; i < keys->nr; i++) { diff --git a/serve.h b/serve.h index fc2683e24d3..b31dd69434b 100644 --- a/serve.h +++ b/serve.h @@ -2,9 +2,6 @@ #define SERVE_H struct strvec; -int has_capability(const struct strvec *keys, const char *capability, - const char **value); - struct serve_options { unsigned advertise_capabilities; unsigned stateless_rpc; From patchwork Wed Jun 16 14:16:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12325339 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 647F1C49361 for ; Wed, 16 Jun 2021 14:16:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4262060041 for ; Wed, 16 Jun 2021 14:16:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233978AbhFPOSm (ORCPT ); Wed, 16 Jun 2021 10:18:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233980AbhFPOSj (ORCPT ); Wed, 16 Jun 2021 10:18:39 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17B75C06175F for ; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id d11so517128wrm.0 for ; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h6IFiLyByxsJtiq5gDMgU91U7uhwC4pDvs4JARLFUaU=; b=ii5TwkGqEFH5+SVbn55MWQlw+jD4qW1ndgdgEszndB7CwtGbkCB+U73msQ1+XXX7PJ 5iUqGCV7Ua2ooooKroLfEmOkQiFhcEzgauwCfbFS91Nxe4LzQeBjkhlgsRvKmHdqAl0T R5MEzHATzcuJOZ1cE9SckD8V5UmVNvy/zrnR3Of6kdZBG3RskEHof5IrpPtOuRE4BFUR zUlgtA1MrsuST3wzZxRukjn7JVXiKNgUqb0rcpURNJKBnSBb8rdMOjCdaCQ6gxmk2DFw BorcfuedX61UcB92QAPNEui+P5vE2gw4gADh9j39GgTqPssrH7ZCEFztaBZ9tL4pRgEN ODQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=h6IFiLyByxsJtiq5gDMgU91U7uhwC4pDvs4JARLFUaU=; b=MTj65y9pOQ1QEFkb8btRpm4ZQoUocezlzjsTw0CCtHCUarI/2aAIVP9g7qjFyqags4 8/sIZKyLcZR9SujkTfb09zdQpz+NQ6zKQZ7fEKjDt2OYw2N0TU94puQ9vOKi9Zu+vjJy VS7X70wkfqAPOpGBqBxde8mJsU6cuEOJd3pariGHs6Dp3s37DLYI1ZRnaYopmItXyQT2 92UWEKtuAFhOTBHplrxl28S3oNaT59/FX50RqZJ/Vlzw72veHLJX522ef0QVj9jb0jP6 6bUn72MN1knFE7o5xFl4BqsEwGOzl0+e2R89T5xI88qf+K/TtMl3VmbbKW4mhbV4o788 PV6g== X-Gm-Message-State: AOAM531VpVEjPD/ZxTXwiNiDNlqshUrM7hnpBCvccgnbVsQzT48is9i0 BlTvmpwoHM7nzylKygrc6u6MY72F2Fc7pA== X-Google-Smtp-Source: ABdhPJzkmFZIupQO278tum/KHbe5nhvJ2Wsy8vamjzOtsKpqvmeu5koOGbe0XaSWVD07Z9Cx4x1BxA== X-Received: by 2002:a5d:5107:: with SMTP id s7mr5782158wrt.12.1623852991434; Wed, 16 Jun 2021 07:16:31 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id a9sm2258555wrv.37.2021.06.16.07.16.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 07:16:30 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Jonathan Tan , Josh Steadmon , Bruno Albuquerque , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFy?= =?utf-8?b?bWFzb24=?= Subject: [PATCH 2/5] transport: rename "fetch" in transport_vtable to "fetch_refs" Date: Wed, 16 Jun 2021 16:16:18 +0200 Message-Id: X-Mailer: git-send-email 2.32.0.576.g59759b6ca7d In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Rename the "fetch" member of the transport_vtable to "fetch_refs" for consistency with the existing "push_refs". Neither of them just push "refs" but refs and objects, but having the two match makes the code more readable than having it be inconsistent, especially since "fetch_refs" is a lot easier to grep for than "fetch". Signed-off-by: Ævar Arnfjörð Bjarmason --- transport-helper.c | 8 ++++---- transport-internal.h | 2 +- transport.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index 4be035edb8b..8d445a8f3ee 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -671,8 +671,8 @@ static int connect_helper(struct transport *transport, const char *name, static struct ref *get_refs_list_using_list(struct transport *transport, int for_push); -static int fetch(struct transport *transport, - int nr_heads, struct ref **to_fetch) +static int fetch_refs(struct transport *transport, + int nr_heads, struct ref **to_fetch) { struct helper_data *data = transport->data; int i, count; @@ -681,7 +681,7 @@ static int fetch(struct transport *transport, if (process_connect(transport, 0)) { do_take_over(transport); - return transport->vtable->fetch(transport, nr_heads, to_fetch); + return transport->vtable->fetch_refs(transport, nr_heads, to_fetch); } /* @@ -1263,7 +1263,7 @@ static struct ref *get_refs_list_using_list(struct transport *transport, static struct transport_vtable vtable = { set_helper_option, get_refs_list, - fetch, + fetch_refs, push_refs, connect_helper, release_helper diff --git a/transport-internal.h b/transport-internal.h index b60f1ba9077..c4ca0b733ac 100644 --- a/transport-internal.h +++ b/transport-internal.h @@ -34,7 +34,7 @@ struct transport_vtable { * get_refs_list(), it should set the old_sha1 fields in the * provided refs now. **/ - int (*fetch)(struct transport *transport, int refs_nr, struct ref **refs); + int (*fetch_refs)(struct transport *transport, int refs_nr, struct ref **refs); /** * Push the objects and refs. Send the necessary objects, and diff --git a/transport.c b/transport.c index 50f5830eb6b..f60985e2dbd 100644 --- a/transport.c +++ b/transport.c @@ -1449,7 +1449,7 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs) heads[nr_heads++] = rm; } - rc = transport->vtable->fetch(transport, nr_heads, heads); + rc = transport->vtable->fetch_refs(transport, nr_heads, heads); free(heads); return rc; From patchwork Wed Jun 16 14:16:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12325341 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13BD1C48BE6 for ; Wed, 16 Jun 2021 14:16:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EE1396109D for ; Wed, 16 Jun 2021 14:16:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233976AbhFPOSn (ORCPT ); Wed, 16 Jun 2021 10:18:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233979AbhFPOSj (ORCPT ); Wed, 16 Jun 2021 10:18:39 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCA60C061574 for ; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id r9so2868626wrz.10 for ; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ci1ZwiNLrFUinSF2vfnFSd9/j+T9JQB23K+KLPrND2c=; b=HfYqhQHHQTDOTuj9Bi72C1HI6A0Zb8E5cxomOOVOT9nRZmEzZpA3lVAsuR1op6AKtq XA9T7rvBVAN00Cvb8KI3ZHcSUcZFqG888sAF6o/tjgdElI3PFLh7qIFMoLxidLIwl4qC uECF2igAdF66Xtv8kWbW0p++F9fvZFgh9n+OTi5+9BblDYM9yCPsOwzOgd/EbefOFr9q aPKzUkBYS0j2RjZCTQZsH1IWpI2Z02UbTT0QX/lpZEayfWRrjVHYrBXSQZZuICizeS4H HvYgx0oyP2khD+/lsQYjTOjRsmqdWNCsD63PE+5DbvMiWedAUVw1U66+/luZyD5NvBDF YHhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ci1ZwiNLrFUinSF2vfnFSd9/j+T9JQB23K+KLPrND2c=; b=Ea7Wufn7QLqcxCVPcOsZQ6pmnrFQ5wMdaL8YuKfr3+Km3Vwc2mvVxoPysbuHa4hl8B t7PTjUTZ4RZbEOWSRBdy0hSTpIHDdfhB2+V6/SjGQMttnFyM9n6HpxkC/Qjt2qy3XNal on93xOW3Q5KVOZtPsdK66jgdBn2U9kMog4yNb2PJ/XnfTnWUfwo1RF3vYrUfEUJobPyk zBRItqeXNEB1IAskiiL4RJ4yOEG1jrhZCt1dpGf/ow59HzjyjlcOKH56EIU+jq51itTm BIg0svJ4uvh/IXWVKyn8DXWfRCtRzOryOyBXs/ShEQd866h1Vxc+3oDQcediqVkM1MLM /Qbw== X-Gm-Message-State: AOAM533TYZwHpW4ektNAJiHzZFn1c1j8zlFphzjvPXSmPK7M8uewtytX SbTqxINxvX/We5cXTCjUlgMZa/ESCesbsQ== X-Google-Smtp-Source: ABdhPJy2Hawk1zHfnnwLrmCTZSnx+BZhh9YeFVedoPBn4ScuoFS0GkXgcrqw3eCAcS64ItP8i9ykKw== X-Received: by 2002:adf:e68a:: with SMTP id r10mr5735622wrm.326.1623852992222; Wed, 16 Jun 2021 07:16:32 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id a9sm2258555wrv.37.2021.06.16.07.16.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 07:16:31 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Jonathan Tan , Josh Steadmon , Bruno Albuquerque , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFy?= =?utf-8?b?bWFzb24=?= Subject: [PATCH 3/5] transport: use designated initializers Date: Wed, 16 Jun 2021 16:16:19 +0200 Message-Id: X-Mailer: git-send-email 2.32.0.576.g59759b6ca7d In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the assignments to the various transport_vtables to use designated initializers, this makes the code easier to read and maintain. Signed-off-by: Ævar Arnfjörð Bjarmason --- transport-helper.c | 12 ++++++------ transport.c | 30 ++++++++++++------------------ 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/transport-helper.c b/transport-helper.c index 8d445a8f3ee..e8dbdd11530 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -1261,12 +1261,12 @@ static struct ref *get_refs_list_using_list(struct transport *transport, } static struct transport_vtable vtable = { - set_helper_option, - get_refs_list, - fetch_refs, - push_refs, - connect_helper, - release_helper + .set_option = set_helper_option, + .get_refs_list = get_refs_list, + .fetch_refs = fetch_refs, + .push_refs = push_refs, + .connect = connect_helper, + .disconnect = release_helper }; int transport_helper_init(struct transport *transport, const char *name) diff --git a/transport.c b/transport.c index f60985e2dbd..bdd9b5a93cf 100644 --- a/transport.c +++ b/transport.c @@ -880,12 +880,10 @@ static int disconnect_git(struct transport *transport) } static struct transport_vtable taken_over_vtable = { - NULL, - get_refs_via_connect, - fetch_refs_via_pack, - git_transport_push, - NULL, - disconnect_git + .get_refs_list = get_refs_via_connect, + .fetch_refs = fetch_refs_via_pack, + .push_refs = git_transport_push, + .disconnect = disconnect_git }; void transport_take_over(struct transport *transport, @@ -1029,21 +1027,17 @@ void transport_check_allowed(const char *type) } static struct transport_vtable bundle_vtable = { - NULL, - get_refs_from_bundle, - fetch_refs_from_bundle, - NULL, - NULL, - close_bundle + .get_refs_list = get_refs_from_bundle, + .fetch_refs = fetch_refs_from_bundle, + .disconnect = close_bundle }; static struct transport_vtable builtin_smart_vtable = { - NULL, - get_refs_via_connect, - fetch_refs_via_pack, - git_transport_push, - connect_git, - disconnect_git + .get_refs_list = get_refs_via_connect, + .fetch_refs = fetch_refs_via_pack, + .push_refs = git_transport_push, + .connect = connect_git, + .disconnect = disconnect_git }; struct transport *transport_get(struct remote *remote, const char *url) From patchwork Wed Jun 16 14:16:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12325345 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C95AFC49361 for ; Wed, 16 Jun 2021 14:16:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B5238611BE for ; Wed, 16 Jun 2021 14:16:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233998AbhFPOSp (ORCPT ); Wed, 16 Jun 2021 10:18:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233984AbhFPOSm (ORCPT ); Wed, 16 Jun 2021 10:18:42 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADF1EC061768 for ; Wed, 16 Jun 2021 07:16:34 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id r9so2868669wrz.10 for ; Wed, 16 Jun 2021 07:16:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vmsM/wngjW0S4UuM42G08DE3X0flSPTEx30Igs5jkek=; b=PiO26E9WmZo1DBWGJrPbqBAH8iAgwSllvv1oS42RQLKzOPQVdPs6HMdiZH1FfISlu1 m8PqeshZFY9y1vlfo9X74RmkgzUTEXe1/crh22dfeI22Jq++BkO/1/DdvNijgN9Yoa4Q DEN89WEjuu1yFbvMoeAzmw/L+EHYwHOMxF++/QmqBPLBnC6YLGa85GtqNyUeRyvQrD7A t0Hf+8b3vYhidXzTKc+JcJh5RwH9gy5yZktN8ZV90LYJQD6ETbrmxUWD+J3ExuhzxRmK gLINPWAzkMGoLkLHFHzHVkuaK4HhTsv9GjLcVqYpHSfn0fP5nOp/0lOfxFoSaJXRmpUk WZWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vmsM/wngjW0S4UuM42G08DE3X0flSPTEx30Igs5jkek=; b=gzUfGsOZ7AeF+5ObJk4FwC5zd6QxDtuUyeLLh5KwE3H4FLt79dLskZZMUrbgsyZi20 j9XbPtot+EH4ikGRs0RDCv/PmnaSjdDHSW6boD+5h76BhYCxQ5rCN4PT0o8g537OgAZS sFkg4UQA1SRho6+dM7F+HgytsMtTpZUSnwS6LJAVpv0URjgPtTTPT93KP1QLSfNUy25Z 2Pc13yZAMTsDZTsK4FZKj6YS91fmRwl4cfxEfRcLnv4Vj3Ir9cFwxr2Fho0pODFtetSP mpX8BRqlmNKNTcv0MIxIIpK0JRYiMJ3qkr1KyXXsfGsXtrFPgV7obExkmI0xjeHbAfi7 4K7A== X-Gm-Message-State: AOAM532XrQxr9D7UOOJeHqdR0inPBl4AKKE3DH55P67oCMQW1RKYlMJ+ vKwyp2dMkTZFHLE0pXaeLSMOvk9c7C2wow== X-Google-Smtp-Source: ABdhPJxvUL4LgOkcMi4FdFr7ylny8EaLQdAaUpCG/ZZGQrkjadDMr+3hlbsBn7dcniUhT9nLVDx3DQ== X-Received: by 2002:a5d:47a2:: with SMTP id 2mr5741276wrb.353.1623852993013; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id a9sm2258555wrv.37.2021.06.16.07.16.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 07:16:32 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Jonathan Tan , Josh Steadmon , Bruno Albuquerque , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFy?= =?utf-8?b?bWFzb24=?= Subject: [PATCH 4/5] serve: use designated initializers Date: Wed, 16 Jun 2021 16:16:20 +0200 Message-Id: X-Mailer: git-send-email 2.32.0.576.g59759b6ca7d In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the declaration of the protocol_capability struct to use designated initializers, this makes this more verbose now, but a follow-up commit will add a new field. At that point these lines would be too dense to be on one line comfortably. Signed-off-by: Ævar Arnfjörð Bjarmason --- serve.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/serve.c b/serve.c index 6748c590b74..49ea9fc8fd5 100644 --- a/serve.c +++ b/serve.c @@ -73,13 +73,37 @@ struct protocol_capability { }; static struct protocol_capability capabilities[] = { - { "agent", agent_advertise, NULL }, - { "ls-refs", ls_refs_advertise, ls_refs }, - { "fetch", upload_pack_advertise, upload_pack_v2 }, - { "server-option", always_advertise, NULL }, - { "object-format", object_format_advertise, NULL }, - { "session-id", session_id_advertise, NULL }, - { "object-info", always_advertise, cap_object_info }, + { + .name = "agent", + .advertise = agent_advertise, + }, + { + .name = "ls-refs", + .advertise = ls_refs_advertise, + .command = ls_refs, + }, + { + .name = "fetch", + .advertise = upload_pack_advertise, + .command = upload_pack_v2, + }, + { + .name = "server-option", + .advertise = always_advertise, + }, + { + .name = "object-format", + .advertise = object_format_advertise, + }, + { + .name = "session-id", + .advertise = session_id_advertise, + }, + { + .name = "object-info", + .advertise = always_advertise, + .command = cap_object_info, + }, }; static void advertise_capabilities(void) From patchwork Wed Jun 16 14:16:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12325343 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC978C48BE5 for ; Wed, 16 Jun 2021 14:16:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 96EAE6109D for ; Wed, 16 Jun 2021 14:16:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233979AbhFPOSo (ORCPT ); Wed, 16 Jun 2021 10:18:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50580 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233948AbhFPOSl (ORCPT ); Wed, 16 Jun 2021 10:18:41 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B21AC0617A6 for ; Wed, 16 Jun 2021 07:16:35 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id v9so2888137wrx.6 for ; Wed, 16 Jun 2021 07:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o7Izus7FlArctGrdqIJutA2Lh1sN1MAdDpjhgqzvBTA=; b=uh2xL+GXCj/22pA8xdcLF7Sjqnt38uDfKuFppY77DPa+EWPdN7tRTDCLM+P2BTi1Zr q2Ws2s6bZRu0DmzQmxNEc9k2aHTl0wLTtDNzf7oKAP3sL3uREQunBtnt0AsDhmReebme +cnGawqgLM+/N5tslNQfuky7QdNlnijQZIDdCUBgOzV6Og9nvKFdaBxVqHEhoqWJzSPR lXBsmFRZ7CWuAL24BNJhKKMP84EsGtuHX9Ty1ksnw/cT91vCW+JUdCf6NDRD3gz1upm1 N7G++nnBGJeJSB6OH1WTeZ8uobp8lhHh5FrJvxLf2o1L49JsRduqENSjPIOxR5ufIoUV VbAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=o7Izus7FlArctGrdqIJutA2Lh1sN1MAdDpjhgqzvBTA=; b=b4qN2STiuEiiIwqgTdPaiUE0BkI9zAbYcj0Tj3aneaqtYYjIC6xE/S+bv1OKiYdivw m3zWTmORmxnUUUJjaps8nSaU6pMQPEMKsCSGBJAQHtHND8XVR5zQfIh/pxqgz4R1o5ZO bvx0d15M4FBJXGVdMoBnCRfFKljWaiE/85ig8SFL3EOQoCG/w2i8554OPJsSaRhqOsb7 /EtLxKRs0h4I2ljnfqIHx3P+xSutyY3Jy1ydTuB5CuiRCZaLrF9S1PA6ttTHJtMq670r 7Gxt6n9wCiWRRgfxwgu8a+99mLxIzAnR6qzyzV5j/LCV3CyWHB+91V3TCkPV/9SZ8Qtf MDEA== X-Gm-Message-State: AOAM532jMbq+6lylvMVswiGr1Q9ESrTpfpklNy8YVFODSsOdVwrqMMKB n0+LOsqEHdkFtfFbJMUyP6xlnPklFyfdeQ== X-Google-Smtp-Source: ABdhPJw9qovyIMTGPoU4XrYmDs9vQ4cxSoD0iUH27HiZi7HSlAtZEJTI2c6uZWvrTitGIQygoGqnbg== X-Received: by 2002:a5d:6a0d:: with SMTP id m13mr5612308wru.318.1623852993756; Wed, 16 Jun 2021 07:16:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id a9sm2258555wrv.37.2021.06.16.07.16.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Jun 2021 07:16:33 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Jonathan Tan , Josh Steadmon , Bruno Albuquerque , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFy?= =?utf-8?b?bWFzb24=?= Subject: [PATCH 5/5] serve: add support for a git_config() callback Date: Wed, 16 Jun 2021 16:16:21 +0200 Message-Id: X-Mailer: git-send-email 2.32.0.576.g59759b6ca7d In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since the introduction of serve.c we've added git_config() callbacks and other config reading for capabilities in the following commits: - e20b4192a37 (upload-pack: support hidden refs with protocol v2, 2018-12-18) - 59e1205d167 (ls-refs: report unborn targets of symrefs, 2021-02-05) - 6b5b6e422ee (serve: advertise session ID in v2 capabilities, 2020-11-11) This code can be simplified by simply adding support to serve.c itself for reading config at the right time before the capability is called. In particular the ensure_config_read() function being gone makes this whole thing much simpler. A behavior change here is that we're eagerly doing the configuration for all our capabilities regardless of which one we end up serving, whereas before we'd defer it until the point where we were processing the specific command. We could try to be more lazy here and only read the config if we find out that we're serving "ls-refs" or "session-id", but it's just a fast git_config() callback, I think in this case simplicity trumps a premature optimization. Signed-off-by: Ævar Arnfjörð Bjarmason --- ls-refs.c | 55 ++++++++++++++++++------------------------------------- ls-refs.h | 1 + serve.c | 34 +++++++++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 38 deletions(-) diff --git a/ls-refs.c b/ls-refs.c index 88f6c3f60d8..a8a3e90bd71 100644 --- a/ls-refs.c +++ b/ls-refs.c @@ -7,38 +7,9 @@ #include "pkt-line.h" #include "config.h" -static int config_read; -static int advertise_unborn; -static int allow_unborn; - -static void ensure_config_read(void) -{ - const char *str = NULL; - - if (config_read) - return; - - if (repo_config_get_string_tmp(the_repository, "lsrefs.unborn", &str)) { - /* - * If there is no such config, advertise and allow it by - * default. - */ - advertise_unborn = 1; - allow_unborn = 1; - } else { - if (!strcmp(str, "advertise")) { - advertise_unborn = 1; - allow_unborn = 1; - } else if (!strcmp(str, "allow")) { - allow_unborn = 1; - } else if (!strcmp(str, "ignore")) { - /* do nothing */ - } else { - die(_("invalid value '%s' for lsrefs.unborn"), str); - } - } - config_read = 1; -} +/* "unborn" is on by default if there's no lsrefs.unborn config */ +static int advertise_unborn = 1; +static int allow_unborn = 1; /* * Check if one of the prefixes is a prefix of the ref. @@ -128,8 +99,22 @@ static void send_possibly_unborn_head(struct ls_refs_data *data) strbuf_release(&namespaced); } -static int ls_refs_config(const char *var, const char *value, void *data) +int ls_refs_configure(const char *var, const char *value, void *data) { + if (!strcmp(var, "lsrefs.unborn")) { + if (!strcmp(value, "advertise")) { + /* Allowed and advertised by default */ + } else if (!strcmp(value, "allow")) { + advertise_unborn = 0; + allow_unborn = 1; + } else if (!strcmp(value, "ignore")) { + advertise_unborn = 0; + allow_unborn = 0; + } else { + die(_("invalid value '%s' for lsrefs.unborn"), value); + } + } + /* * We only serve fetches over v2 for now, so respect only "uploadpack" * config. This may need to eventually be expanded to "receive", but we @@ -146,9 +131,6 @@ int ls_refs(struct repository *r, struct strvec *keys, memset(&data, 0, sizeof(data)); strvec_init(&data.prefixes); - ensure_config_read(); - git_config(ls_refs_config, NULL); - while (packet_reader_read(request) == PACKET_READ_NORMAL) { const char *arg = request->line; const char *out; @@ -179,7 +161,6 @@ int ls_refs(struct repository *r, struct strvec *keys, int ls_refs_advertise(struct repository *r, struct strbuf *value) { if (value) { - ensure_config_read(); if (advertise_unborn) strbuf_addstr(value, "unborn"); } diff --git a/ls-refs.h b/ls-refs.h index a99e4be0bdd..afa6dfeb259 100644 --- a/ls-refs.h +++ b/ls-refs.h @@ -6,6 +6,7 @@ struct strvec; struct packet_reader; int ls_refs(struct repository *r, struct strvec *keys, struct packet_reader *request); +int ls_refs_configure(const char *var, const char *value, void *data); int ls_refs_advertise(struct repository *r, struct strbuf *value); #endif /* LS_REFS_H */ diff --git a/serve.c b/serve.c index 49ea9fc8fd5..62cb8aeacdb 100644 --- a/serve.c +++ b/serve.c @@ -33,6 +33,13 @@ static int object_format_advertise(struct repository *r, return 1; } +static int session_id_configure(const char *var, const char *value, void *data) +{ + if (!strcmp(var, "transfer.advertisesid")) + advertise_sid = git_config_bool(var, value); + return 0; +} + static int session_id_advertise(struct repository *r, struct strbuf *value) { if (!advertise_sid) @@ -50,6 +57,13 @@ struct protocol_capability { */ const char *name; + /* + * A git_config() callback. If defined it'll be dispatched too + * sometime before the other functions are called, giving the + * capability a chance to configure itself. + */ + int (*configure)(const char *var, const char *value, void *data); + /* * Function queried to see if a capability should be advertised. * Optionally a value can be specified by adding it to 'value'. @@ -79,6 +93,7 @@ static struct protocol_capability capabilities[] = { }, { .name = "ls-refs", + .configure = ls_refs_configure, .advertise = ls_refs_advertise, .command = ls_refs, }, @@ -97,6 +112,7 @@ static struct protocol_capability capabilities[] = { }, { .name = "session-id", + .configure = session_id_configure, .advertise = session_id_advertise, }, { @@ -106,6 +122,22 @@ static struct protocol_capability capabilities[] = { }, }; +static int git_serve_config(const char *var, const char *value, void *data) +{ + int i; + for (i = 0; i < ARRAY_SIZE(capabilities); i++) { + struct protocol_capability *c = &capabilities[i]; + config_fn_t fn = c->configure; + int ret; + if (!fn) + continue; + ret = fn(var, value, data); + if (ret) + return ret; + } + return 0; +} + static void advertise_capabilities(void) { struct strbuf capability = STRBUF_INIT; @@ -303,7 +335,7 @@ static int process_request(void) /* Main serve loop for protocol version 2 */ void serve(struct serve_options *options) { - git_config_get_bool("transfer.advertisesid", &advertise_sid); + git_config(git_serve_config, NULL); if (options->advertise_capabilities || !options->stateless_rpc) { /* serve by default supports v2 */