From patchwork Tue Dec 11 05:27:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723061 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C12ED13AF for ; Tue, 11 Dec 2018 05:28:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B00FB2A7C3 for ; Tue, 11 Dec 2018 05:28:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A458F2A7C9; Tue, 11 Dec 2018 05:28:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 04E8A2A7C4 for ; Tue, 11 Dec 2018 05:28:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729035AbeLKF2J (ORCPT ); Tue, 11 Dec 2018 00:28:09 -0500 Received: from mail-wr1-f66.google.com ([209.85.221.66]:39808 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727711AbeLKF2I (ORCPT ); Tue, 11 Dec 2018 00:28:08 -0500 Received: by mail-wr1-f66.google.com with SMTP id t27so12699035wra.6 for ; Mon, 10 Dec 2018 21:28:07 -0800 (PST) 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=p0606LX2RuPgOOmputeOybY4watwMruHpIJyKrxEvJI=; b=VezFQ6Grn4z6oVDaoWJlBiS7nd33ubXAw9lFs7CAITZDS3svih3QLx6ATKzMak4QU+ MUcTwdHRc71uRwLp6/xhMvzyM3L2ovKB6Prdl/D6yKJ5HSM2c3pdZhTlWwaQB4IfZ47x +aznshzQl4reY9QnfL/xhybUXjC2DEKRI83czDD++G1zsakfiGFV07q2ywyskeppZAn7 LlePZt6KWvUIBF3cnt6/fFTjz8Wla5Bv0HyZXac2TRTf77ukZB2YKHXov8DQ0xO3/SM1 jzAbNKdS3QrJhm1QqQ05VtvxCHHYDPnVeFMWJ/aHapB4PFtBjjNMj0t3BarlAyMecOw5 HB6A== 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=p0606LX2RuPgOOmputeOybY4watwMruHpIJyKrxEvJI=; b=HFEB7p1Wj2Ssdoyj4KHs7auIh9YAQ4DLF6VxlMLdbreT4cSBjCMwU6QB0bC8tDH4Yj 6yblhoCXbvlUR3pBcUwh4xJARkGzkVjOD0zGxg0SC8mIobf+HIrijvKoRmcgTpUudIxX u5eAjiHzqmTOJyCT2jbHafnZ+TSPpIbPHs2xPb88LsCTKPUTtoSbJg5mplbtFSjBHM/6 Diy2mQtgqVSLic7WjrjWRl7SUyuf2DLVqGf+T6RYSfzGMqOg1HN1jVjRWW3ZZ1ZmmvC8 6l36+5XwL6gLzwvFp/1mJDWWQS6iQeYlWvS/sIXmLnNLyaTYcSDOhbH+q4jU/IAEuHv3 GH7g== X-Gm-Message-State: AA+aEWY2V9Wwn1XDhelgngSPnAqTgMxNkvLx6QYInY+Et+Nl3b52Gee6 XzKrFNLkaMkZ4TNL0gMh1UXh59Wq X-Google-Smtp-Source: AFSGD/VmjMAt+swvX6AQcAVdNY1soz66R1kwAWRqkDQuUUgxb36/mE4UqgGVNFf5qw6oOoE5WA603g== X-Received: by 2002:adf:82e4:: with SMTP id 91mr12682512wrc.131.1544506085863; Mon, 10 Dec 2018 21:28:05 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:05 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli , Christian Couder Subject: [PATCH v1 1/8] fetch-object: make functions return an error code Date: Tue, 11 Dec 2018 06:27:39 +0100 Message-Id: <20181211052746.16218-2-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Christian Couder The callers of the fetch_object() and fetch_objects() might be interested in knowing if these functions succeeded or not. Signed-off-by: Christian Couder Signed-off-by: Junio C Hamano --- fetch-object.c | 13 ++++++++----- fetch-object.h | 4 ++-- sha1-file.c | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/fetch-object.c b/fetch-object.c index 4266548800..eac4d448ef 100644 --- a/fetch-object.c +++ b/fetch-object.c @@ -5,11 +5,12 @@ #include "transport.h" #include "fetch-object.h" -static void fetch_refs(const char *remote_name, struct ref *ref) +static int fetch_refs(const char *remote_name, struct ref *ref) { struct remote *remote; struct transport *transport; int original_fetch_if_missing = fetch_if_missing; + int res; fetch_if_missing = 0; remote = remote_get(remote_name); @@ -19,12 +20,14 @@ static void fetch_refs(const char *remote_name, struct ref *ref) transport_set_option(transport, TRANS_OPT_FROM_PROMISOR, "1"); transport_set_option(transport, TRANS_OPT_NO_DEPENDENTS, "1"); - transport_fetch_refs(transport, ref); + res = transport_fetch_refs(transport, ref); fetch_if_missing = original_fetch_if_missing; + + return res; } -void fetch_objects(const char *remote_name, const struct object_id *oids, - int oid_nr) +int fetch_objects(const char *remote_name, const struct object_id *oids, + int oid_nr) { struct ref *ref = NULL; int i; @@ -36,5 +39,5 @@ void fetch_objects(const char *remote_name, const struct object_id *oids, new_ref->next = ref; ref = new_ref; } - fetch_refs(remote_name, ref); + return fetch_refs(remote_name, ref); } diff --git a/fetch-object.h b/fetch-object.h index d6444caa5a..7bcc7cadb0 100644 --- a/fetch-object.h +++ b/fetch-object.h @@ -3,7 +3,7 @@ struct object_id; -void fetch_objects(const char *remote_name, const struct object_id *oids, - int oid_nr); +int fetch_objects(const char *remote_name, const struct object_id *oids, + int oid_nr); #endif diff --git a/sha1-file.c b/sha1-file.c index 5bd11c85bc..cf88eeb147 100644 --- a/sha1-file.c +++ b/sha1-file.c @@ -1312,8 +1312,8 @@ int oid_object_info_extended(struct repository *r, const struct object_id *oid, if (fetch_if_missing && repository_format_partial_clone && !already_retried && r == the_repository) { /* - * TODO Investigate having fetch_object() return - * TODO error/success and stopping the music here. + * TODO Investigate checking fetch_object() return + * TODO value and stopping on error here. * TODO Pass a repository struct through fetch_object, * such that arbitrary repositories work. */ From patchwork Tue Dec 11 05:27:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723069 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 07D1317FE for ; Tue, 11 Dec 2018 05:28:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EB9A92A7C2 for ; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E03082A7C4; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7656F2A7C3 for ; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729051AbeLKF2M (ORCPT ); Tue, 11 Dec 2018 00:28:12 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:35150 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728964AbeLKF2K (ORCPT ); Tue, 11 Dec 2018 00:28:10 -0500 Received: by mail-wm1-f65.google.com with SMTP id c126so827610wmh.0 for ; Mon, 10 Dec 2018 21:28:08 -0800 (PST) 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=FyxXPcl1mtmM4B7FNlUbG6Fa4zo6QIcLJrF7xx1bedM=; b=cTysa74HbWQ5ZJ1esZVzEPGEKEP4n5eh3LV2JsV63mBAwzN6wipleleo9RkJJPCQ4B 2jTtaHCjfghWEr8p6zuRki/7NZJUbsqLp4rn2mpxmwq3+Mgs2tQZIOke8zjEdCsnwTzf C183ZoOruX0FjE5JcLNetYP75+wbxMO7DQ5Uzr6IK0K1rj795QJLEtinn0NoraHpcfeJ NLV0gq71l49/H9eq7+Uhf6Lkl7g8BVEUXF/1mpjAS7ekNSKD5bVfqTrKwSV4P7F5ex5Z 1oziD4dJf4ALXtVknWneZu4ow0H3MsjoelflZUwfT3CpfKTfJgeZ02WRTSQzBgFvF7mS x9AA== 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=FyxXPcl1mtmM4B7FNlUbG6Fa4zo6QIcLJrF7xx1bedM=; b=KXGbne9pnAhZjFbewpr4hc76dRSLGU/A1Zs4I7JgdI70fWHj5//lHiOe7j8rQx+1ic E/PRDHM4l39HvSHIAR0REdSFEXrF8cKPfV87rLwnS9HeVBfx7LfsqL7sF10tUgOBBBBK gXkbkTmSD4tgQU2xjdUUsjvT107GDFM87H/XUHXiC6ccTOBohn8x9q/Jw6/QD4HpLh63 XHPyDv7LuHUecK2lw6/cX4vwvq05M9cbidfVfgK1PVBNs2lEceJ5vhl+fXKwFsGi2iJn Bd1z+KQIv3Px4blsdzXJc2xAxCJmMi1KA4oO1cDavw/qjjDfbWBaODqZ2K8DOi0N1J5L MT8w== X-Gm-Message-State: AA+aEWaBg8QLgG5x4sMphsaDIipB42qsvwdPyDCbXin2W0Um30syARDV U6nJbFCqea1C2nmGVdxc5cNCL50g X-Google-Smtp-Source: AFSGD/WrXfU28riM1MH2mqDWZjbblQNK/wYqO+uygeo4TEc+f0VmAmYMcKm4R4EYhd6Nz0gWWdHxxA== X-Received: by 2002:a1c:709:: with SMTP id 9mr923205wmh.39.1544506087434; Mon, 10 Dec 2018 21:28:07 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:06 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli , Christian Couder Subject: [PATCH v1 2/8] Add initial support for many promisor remotes Date: Tue, 11 Dec 2018 06:27:40 +0100 Message-Id: <20181211052746.16218-3-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Christian Couder The promisor-remote.{c,h} files will contain functions to manage many promisor remotes. We expect that there will not be a lot of promisor remotes, so it is ok to use a simple linked list to manage them. Helped-by: Jeff King Signed-off-by: Christian Couder --- Makefile | 1 + promisor-remote.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++ promisor-remote.h | 17 +++++++++ 3 files changed, 108 insertions(+) create mode 100644 promisor-remote.c create mode 100644 promisor-remote.h diff --git a/Makefile b/Makefile index 1a44c811aa..565a5fbb4e 100644 --- a/Makefile +++ b/Makefile @@ -949,6 +949,7 @@ LIB_OBJS += preload-index.o LIB_OBJS += pretty.o LIB_OBJS += prio-queue.o LIB_OBJS += progress.o +LIB_OBJS += promisor-remote.o LIB_OBJS += prompt.o LIB_OBJS += protocol.o LIB_OBJS += quote.o diff --git a/promisor-remote.c b/promisor-remote.c new file mode 100644 index 0000000000..701f5a351b --- /dev/null +++ b/promisor-remote.c @@ -0,0 +1,90 @@ +#include "cache.h" +#include "promisor-remote.h" +#include "config.h" + +static struct promisor_remote *promisors; +static struct promisor_remote **promisors_tail = &promisors; + +struct promisor_remote *promisor_remote_new(const char *remote_name) +{ + struct promisor_remote *o; + + o = xcalloc(1, sizeof(*o)); + o->remote_name = xstrdup(remote_name); + + *promisors_tail = o; + promisors_tail = &o->next; + + return o; +} + +static struct promisor_remote *do_find_promisor_remote(const char *remote_name) +{ + struct promisor_remote *o; + + for (o = promisors; o; o = o->next) + if (o->remote_name && !strcmp(o->remote_name, remote_name)) + return o; + + return NULL; +} + +static int promisor_remote_config(const char *var, const char *value, void *data) +{ + struct promisor_remote *o; + const char *name; + int namelen; + const char *subkey; + + if (parse_config_key(var, "remote", &name, &namelen, &subkey) < 0) + return 0; + + if (!strcmp(subkey, "promisor")) { + char *remote_name; + + if (!git_config_bool(var, value)) + return 0; + + remote_name = xmemdupz(name, namelen); + + if (do_find_promisor_remote(remote_name)) { + free(remote_name); + return error(_("when parsing config key '%s' " + "promisor remote '%s' already exists"), + var, remote_name); + } + + promisor_remote_new(remote_name); + + free(remote_name); + return 0; + } + + return 0; +} + +static void promisor_remote_init(void) +{ + static int initialized; + + if (initialized) + return; + initialized = 1; + + git_config(promisor_remote_config, NULL); +} + +struct promisor_remote *find_promisor_remote(const char *remote_name) +{ + promisor_remote_init(); + + if (!remote_name) + return promisors; + + return do_find_promisor_remote(remote_name); +} + +int has_promisor_remote(void) +{ + return !!find_promisor_remote(NULL); +} diff --git a/promisor-remote.h b/promisor-remote.h new file mode 100644 index 0000000000..d07ac07a43 --- /dev/null +++ b/promisor-remote.h @@ -0,0 +1,17 @@ +#ifndef PROMISOR_REMOTE_H +#define PROMISOR_REMOTE_H + +/* + * Promisor remote linked list + * Its information come from remote.XXX config entries. + */ +struct promisor_remote { + const char *remote_name; + struct promisor_remote *next; +}; + +extern struct promisor_remote *promisor_remote_new(const char *remote_name); +extern struct promisor_remote *find_promisor_remote(const char *remote_name); +extern int has_promisor_remote(void); + +#endif /* PROMISOR_REMOTE_H */ From patchwork Tue Dec 11 05:27:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723063 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2542B15A6 for ; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 166AC2A7CC for ; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0B1922A7CF; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A7B662A7C4 for ; Tue, 11 Dec 2018 05:28:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729063AbeLKF2M (ORCPT ); Tue, 11 Dec 2018 00:28:12 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:47099 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727711AbeLKF2L (ORCPT ); Tue, 11 Dec 2018 00:28:11 -0500 Received: by mail-wr1-f68.google.com with SMTP id l9so12662899wrt.13 for ; Mon, 10 Dec 2018 21:28:10 -0800 (PST) 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=O6Avg48SowHLfYs20Xzi415uBeQZHl9WsF4bqj5V+RY=; b=BAA2m2F0sAsIklKRFFxdvLvjaRn5QJXfnsobj+HAddo2/O/KJ3e6DhgTusuXSgdJLJ wQYdmPW5oAgjfvr2VeHjUsyQObBL8WGU5OaqUm+qgO43yof0XiUvBlwXqiSeK+IhDD37 /+7HTqMx+UEBs9ljaSNcrzd/vGn8vpIBqX02ISfJi3+DKJYLTw3Uwp7QVbb2puUbyRTI eSZkqM8+ujt5OQh5HcXRU6nDxXyxNxtFoxC4z+NUO94wmVpx8RicD57KGIdQUAcLiKTq tQOrEfj3XzzOZVZbLyErKWTHoYqj/nRhuClbgXe4tKNKCW6J1NTPYBpUQq2f+HgloWgh JRFg== 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=O6Avg48SowHLfYs20Xzi415uBeQZHl9WsF4bqj5V+RY=; b=oY7d6OHh3554f+TAWkdd0n4fgtVoRAXmuiBbZCrtW/LO4jk0MG86jHApogYQitJhdG xc1+PxShmnPFmxiiO3vy44PvJqjhB4XulyqJwghGWmgu7rPtSpH/ephEBFAje03XxQlN L+fgKUH/Xq4EkFoRZSPTVfzRlKRW5APJCDajmIw9lm8m2XJv9+2RwhBpC8HT6W1IWJD/ F4GXivEt+Mk/LP0bo7/48rxsYIp8Uquslz/JRDdxba1papgIFEv/jDJpw1mJd/vj1KPp VC2CgW8CNMGObtYvzuT90UYn1J/Cj99D1iYgrSZ0NYMiw18mj6Te1LKXug9uO+PiT6H7 UBvQ== X-Gm-Message-State: AA+aEWYMozvGOIhnIG4JyGnBp71tI6/OikJhlgWLOnplla8zd9Eu5T5o bgq4YFNdT4578ZvLHBi317CEuqWO X-Google-Smtp-Source: AFSGD/XtYGlC4bJ2NyU+43aWlQLJpzdV1gGkYV+HFT6lzyMIEi6KP8MuOw7zmMih65CgxQiUuc92VQ== X-Received: by 2002:adf:ee89:: with SMTP id b9mr12732176wro.246.1544506089041; Mon, 10 Dec 2018 21:28:09 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:08 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli , Christian Couder Subject: [PATCH v1 3/8] promisor-remote: implement promisors_get_direct() Date: Tue, 11 Dec 2018 06:27:41 +0100 Message-Id: <20181211052746.16218-4-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Christian Couder This is implemented for now by calling fetch_objects(). It fetches from all the promisor remotes. Signed-off-by: Christian Couder --- promisor-remote.c | 33 +++++++++++++++++++++++++++++++++ promisor-remote.h | 1 + 2 files changed, 34 insertions(+) diff --git a/promisor-remote.c b/promisor-remote.c index 701f5a351b..e0724bdc20 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -1,6 +1,7 @@ #include "cache.h" #include "promisor-remote.h" #include "config.h" +#include "fetch-object.h" static struct promisor_remote *promisors; static struct promisor_remote **promisors_tail = &promisors; @@ -88,3 +89,35 @@ int has_promisor_remote(void) { return !!find_promisor_remote(NULL); } + +static int promisor_remote_get_direct(struct promisor_remote *o, + const struct object_id *oids, + int oid_nr) +{ + int res; + uint64_t start = getnanotime(); + + res = fetch_objects(o->remote_name, oids, oid_nr); + + trace_performance_since(start, "promisor_remote_get_direct"); + + return res; +} + +int promisors_get_direct(const struct object_id *oids, int oid_nr) +{ + struct promisor_remote *o; + + trace_printf("trace: promisor_remote_get_direct: nr: %d", oid_nr); + + promisor_remote_init(); + + for (o = promisors; o; o = o->next) { + if (promisor_remote_get_direct(o, oids, oid_nr) < 0) + continue; + return 0; + } + + return -1; +} + diff --git a/promisor-remote.h b/promisor-remote.h index d07ac07a43..8b89221b33 100644 --- a/promisor-remote.h +++ b/promisor-remote.h @@ -13,5 +13,6 @@ struct promisor_remote { extern struct promisor_remote *promisor_remote_new(const char *remote_name); extern struct promisor_remote *find_promisor_remote(const char *remote_name); extern int has_promisor_remote(void); +extern int promisors_get_direct(const struct object_id *oids, int oid_nr); #endif /* PROMISOR_REMOTE_H */ From patchwork Tue Dec 11 05:27:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723065 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 45F9417FE for ; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 34BE82A7C4 for ; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 290542A7CC; Tue, 11 Dec 2018 05:28:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C82132A7C9 for ; Tue, 11 Dec 2018 05:28:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729067AbeLKF2N (ORCPT ); Tue, 11 Dec 2018 00:28:13 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:41134 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729036AbeLKF2M (ORCPT ); Tue, 11 Dec 2018 00:28:12 -0500 Received: by mail-wr1-f68.google.com with SMTP id x10so12695106wrs.8 for ; Mon, 10 Dec 2018 21:28:11 -0800 (PST) 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=+d5y56ev8WnX7X+cfbB2ub0R7dcx2j47G1GyXuBv+Cg=; b=kZCHJSe0otv8EUI1gE7uZ/eGcaoTnsZwNePBUs+q4wIdItuYvpSfklzL8K4WOKSGXg ETzAL5F/HWvMzc2fd2PcwctDT6J0UsB4hjepR9XBnuxkkyHgNpFAasRa6U11u6X9FuFG okmOL3s8kljj8zYT7JZCaulVxQZu6ineYUQBapv5+yCMZUmXRZL7lCxaMTSCr29Kdrli lMD1iqy3DJ/rd5forVy1Z7DpN6iSs+5oAsFsTgztRKsPogVgorO1hedfzSiXg9fBHgXd M9uzDeTiYe7zF7z9DFvOFjsOjzf8SOWK61ObO0ZvjqDLg0h8psyGGSOd7WM8dLI4R7WP Nqiw== 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=+d5y56ev8WnX7X+cfbB2ub0R7dcx2j47G1GyXuBv+Cg=; b=rCPbcf1BrHFF88mTglmibzW7lARCM4TMl1ASv2G6cDzPn832/JlkEvWKwFYBW9Wk5y qny3qr/hPfRFkDWEAybsI9sR3DeCN2q+bIxQamhQPlLodpjzYmrBlFCdNLPrzDh3zEEH qvSLoaWJYqiMzJRfIavY6TeNcUu6gIcouncJ2Kw+4m3lqAzPZ3GNtdBrFqz4nlF9zOQd 9IRkYqgr6TinbfitZazRwmIjiZwmzWz/fTfZwfm+7x7uYg0NpdmdxM89jZPZtOBg/EZv 6bBQg3ppCIVqs5JamZy8luDEj4BjQW9HctrrGNBC39k+H0i0k2Zww6ar1T6hCho3AdIP SX1A== X-Gm-Message-State: AA+aEWbKO3DLiZJb5mMWx7v7QW49KyRblFQ1FA7OqYwpge1K2ABeKpp/ geJ/kWSBSW+Lszxc1v9onOCoagT5 X-Google-Smtp-Source: AFSGD/VVrKv6Rotk7uANAyw66XZ3eUHu3GkO2QMlsIRPJvfPSWnWWm7GJc9w/izM5NIj3rSkSUE5nQ== X-Received: by 2002:adf:9d85:: with SMTP id p5mr11390937wre.41.1544506090435; Mon, 10 Dec 2018 21:28:10 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:09 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli , Christian Couder Subject: [PATCH v1 4/8] promisor-remote: add promisor_remote_reinit() Date: Tue, 11 Dec 2018 06:27:42 +0100 Message-Id: <20181211052746.16218-5-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Christian Couder We will need to reinitialize the promisor remote configuration as we will make some changes to it in a later commit. Signed-off-by: Christian Couder --- promisor-remote.c | 14 ++++++++++++-- promisor-remote.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/promisor-remote.c b/promisor-remote.c index e0724bdc20..ca2b8bf6bb 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -64,17 +64,27 @@ static int promisor_remote_config(const char *var, const char *value, void *data return 0; } -static void promisor_remote_init(void) +static void promisor_remote_do_init(int force) { static int initialized; - if (initialized) + if (!force && initialized) return; initialized = 1; git_config(promisor_remote_config, NULL); } +static inline void promisor_remote_init(void) +{ + promisor_remote_do_init(0); +} + +void promisor_remote_reinit(void) +{ + promisor_remote_do_init(1); +} + struct promisor_remote *find_promisor_remote(const char *remote_name) { promisor_remote_init(); diff --git a/promisor-remote.h b/promisor-remote.h index 8b89221b33..873ddfb5ed 100644 --- a/promisor-remote.h +++ b/promisor-remote.h @@ -10,6 +10,7 @@ struct promisor_remote { struct promisor_remote *next; }; +extern void promisor_remote_reinit(void); extern struct promisor_remote *promisor_remote_new(const char *remote_name); extern struct promisor_remote *find_promisor_remote(const char *remote_name); extern int has_promisor_remote(void); From patchwork Tue Dec 11 05:27:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723067 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C4CDA13AF for ; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B6D892A7C2 for ; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AB4A62A7C9; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 55CF62A7C2 for ; Tue, 11 Dec 2018 05:28:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729074AbeLKF2P (ORCPT ); Tue, 11 Dec 2018 00:28:15 -0500 Received: from mail-wr1-f68.google.com ([209.85.221.68]:42480 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729053AbeLKF2O (ORCPT ); Tue, 11 Dec 2018 00:28:14 -0500 Received: by mail-wr1-f68.google.com with SMTP id q18so12698893wrx.9 for ; Mon, 10 Dec 2018 21:28:12 -0800 (PST) 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=2MlkPh/mYiPuNKdmMMvVaifG/cZSWglzGLvJndF72bc=; b=lGLjnYuW0BQ/zNDG3sVLdRoISqhGU1NT5AS6AVcfMI4rm0g3e8OgqJ+kDmbtYsuj0T Bcb+JcZ9ZVUkforDLiC6dUPcm8DT53L0sQxyl/8nUXDhUPVLaM8gw9UqcPyAI+0WqAS1 Ru2a9bWJ0bzXrwm4mcVNGkn/tasS+Njse36bBT8gzq3ZFGWjfFld9gq3zj4SJqy25rL4 BuLvXC6d97McJPRXrHzrNc4ni+Tq8LDU+LwUrH0xaZPfkhKFRDqDSuy3mztzOSik1nN1 ArZqu1nUc6ydXEeJK/H65Vuoq/5mGcDUVVtiCk7tz+dkvwRoOitfFd5zHmSj4S6XBvej xkWA== 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=2MlkPh/mYiPuNKdmMMvVaifG/cZSWglzGLvJndF72bc=; b=rJGD73wq+qnH2YSHur5eOowUc00PXXfPrVnacgYUIyu/eZSbQq733o9xBsBMfCypXU umLgvDqIstVhDz8GthydJqEU6VJ7DPUqlu0u91NgOd4KWB9cUCyWIAMwCpDTq4l/pxxB wird7GcmAhhPLoXCcgjwrkUbbqSJCDKGOFH0F5qmQJRU4sBnQaUvdmTzZyxC1+Atep9/ PiEzkroZJLNwxelY9dRgn43qh+U84woGL7IY/3ddoynfeT6x3HJ9Et8jOyypJw01YUQD PD989myISXxyEwMJb9czsiqx8EliJ18RieSGRxF2N47DOoqf9qOvXHznaUQsNmb3k6l0 AnWA== X-Gm-Message-State: AA+aEWZxNGIZ8wbw/rlIBh539CNahmKYAB5XjrtDaOCf0ZGqBMXGX7Qi Qiggs8GH2EA0gCrsL5VLiNv+CK0i X-Google-Smtp-Source: AFSGD/WIdCUZ5uHX28VRO7Hh/5UZz6J0Ox7cJT3Ch7FL/NOdMk8VF1H7SsUOGnEK4H+VEDGpXmMJuA== X-Received: by 2002:a05:6000:8a:: with SMTP id m10mr11684790wrx.79.1544506091736; Mon, 10 Dec 2018 21:28:11 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:11 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli Subject: [PATCH v1 5/8] promisor-remote: use repository_format_partial_clone Date: Tue, 11 Dec 2018 06:27:43 +0100 Message-Id: <20181211052746.16218-6-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP A remote specified using the extensions.partialClone config option should be considered a promisor remote too. Signed-off-by: Christian Couder --- promisor-remote.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/promisor-remote.c b/promisor-remote.c index ca2b8bf6bb..e4a0625426 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -73,6 +73,11 @@ static void promisor_remote_do_init(int force) initialized = 1; git_config(promisor_remote_config, NULL); + + if (repository_format_partial_clone && + !do_find_promisor_remote(repository_format_partial_clone)) + promisor_remote_new(repository_format_partial_clone, + strlen(repository_format_partial_clone)); } static inline void promisor_remote_init(void) From patchwork Tue Dec 11 05:27:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723075 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D41E313AF for ; Tue, 11 Dec 2018 05:28:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C1E022A7C2 for ; Tue, 11 Dec 2018 05:28:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B63752A7C4; Tue, 11 Dec 2018 05:28:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CD5BD2A7C2 for ; Tue, 11 Dec 2018 05:28:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729081AbeLKF2S (ORCPT ); Tue, 11 Dec 2018 00:28:18 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:36172 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729036AbeLKF2R (ORCPT ); Tue, 11 Dec 2018 00:28:17 -0500 Received: by mail-wm1-f68.google.com with SMTP id a18so828562wmj.1 for ; Mon, 10 Dec 2018 21:28:14 -0800 (PST) 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=CjLdJ3Og+Hql5t7fmiNjUJuMDVAm3tVRpwC9E31PA/o=; b=Dh/PfDXUo4MG0XlIf+IETRYA8j/n+GC9FTD4LvvCp37PIKZV4WnWsrWpHAfHxyoIYb lSAn0YPjvAn8FDiZgycyGsB4SiiBohXmIfc1l1d6Kz3w8A7Clz/zJwWb1pVw6tJOV5Ds g0H75XwCULJqpEro/DDUbqzitHNvl/174bkLGjVtZVEwWkQNHPDcEi5P9E795eBTFiYu qZRbb7xzXtIXNxLJaPCiwhbCEx6sYz/ejoHFTstTdJTfkX2UxCwm4Ii8nsmzpkciYc2C BuaP8phsQMz8a5ejwzOrBEnuArRwawj1UktKNjTdS7CswcGa9ZDsfWdQSCsotYdC3ruG arPg== 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=CjLdJ3Og+Hql5t7fmiNjUJuMDVAm3tVRpwC9E31PA/o=; b=BzOyHyoN58aeDMA1Uebt5KKFBAwXZB/SSJlbvJ6iOyGVYnnthRgRvECO5emocPreou H/pPDkyZmziK3U22wvCUXqMQsIHd9LZs0zIjrPEG5iNaHpk/njkapiLIcvM/1KVA5zrJ 8Gs2rNFpsDx34dv+4BteSIuomPlI85cP5Ln5a2wdkI08KAm7SRQjv6cKAwC+gngD5gNp ip2ooAt3djk1HQZ05aUuOvopGqdzq2vBzTPTFCXtI13YkO2Of9187Ki04Uch4bbc2rTG zWfHGH/Z3o+nkxNGACaAKd87by6hGjM4Y9yDphbuVE/fufNdX0+qLt6wCfk3hYXUQsBt n9mA== X-Gm-Message-State: AA+aEWa/YgRB5G9S7LI9Qql/HXPQ/y6ILNytZu+HtxRsJr9ug3wSnqVA CQvUT7UJrT44setxQL8VbxuPEoTa X-Google-Smtp-Source: AFSGD/VYOakLY1GmDjYY04tC8BP9a/6rMrM8mlGSLg8W9+11Ryn/cJCkV3KrKCQ1dCReB/M9x6Vp5Q== X-Received: by 2002:a1c:f116:: with SMTP id p22mr958098wmh.0.1544506093299; Mon, 10 Dec 2018 21:28:13 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:12 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli Subject: [PATCH v1 6/8] Use promisors_get_direct() and has_promisor_remote() Date: Tue, 11 Dec 2018 06:27:44 +0100 Message-Id: <20181211052746.16218-7-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Instead of using the repository_format_partial_clone global and fetch_objects() directly, let's use has_promisor_remote() and promisors_get_direct(). This way all the configured promisor remotes will be taken into account, not only the one specified by extensions.partialClone. Also when cloning or fetching using a partial clone filter, remote.origin.promisor will be set to "true" instead of setting extensions.partialClone to "origin". This makes it possible to use many promisor remote just by fetching from them. Signed-off-by: Christian Couder --- builtin/cat-file.c | 5 +++-- builtin/fetch.c | 11 ++++++----- builtin/gc.c | 3 ++- builtin/repack.c | 3 ++- cache-tree.c | 3 ++- connected.c | 3 ++- list-objects-filter-options.c | 28 +++++++++++++++------------- packfile.c | 3 ++- sha1-file.c | 14 ++++++++------ t/t5601-clone.sh | 2 +- t/t5616-partial-clone.sh | 2 +- unpack-trees.c | 6 +++--- 12 files changed, 47 insertions(+), 36 deletions(-) diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 2ca56fd086..bdb0331ba4 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -14,6 +14,7 @@ #include "sha1-array.h" #include "packfile.h" #include "object-store.h" +#include "promisor-remote.h" struct batch_options { int enabled; @@ -517,8 +518,8 @@ static int batch_objects(struct batch_options *opt) if (opt->all_objects) { struct object_cb_data cb; - if (repository_format_partial_clone) - warning("This repository has extensions.partialClone set. Some objects may not be loaded."); + if (has_promisor_remote()) + warning("This repository uses promisor remotes. Some objects may not be loaded."); cb.opt = opt; cb.expand = &data; diff --git a/builtin/fetch.c b/builtin/fetch.c index e0140327aa..647a60b26c 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -23,6 +23,7 @@ #include "packfile.h" #include "list-objects-filter-options.h" #include "commit-reach.h" +#include "promisor-remote.h" static const char * const builtin_fetch_usage[] = { N_("git fetch [] [ [...]]"), @@ -1459,7 +1460,7 @@ static inline void fetch_one_setup_partial(struct remote *remote) * If no prior partial clone/fetch and the current fetch DID NOT * request a partial-fetch, do a normal fetch. */ - if (!repository_format_partial_clone && !filter_options.choice) + if (!has_promisor_remote() && !filter_options.choice) return; /* @@ -1467,7 +1468,7 @@ static inline void fetch_one_setup_partial(struct remote *remote) * on this repo and remember the given filter-spec as the default * for subsequent fetches to this remote. */ - if (!repository_format_partial_clone && filter_options.choice) { + if (!has_promisor_remote() && filter_options.choice) { partial_clone_register(remote->name, &filter_options); return; } @@ -1476,7 +1477,7 @@ static inline void fetch_one_setup_partial(struct remote *remote) * We are currently limited to only ONE promisor remote and only * allow partial-fetches from the promisor remote. */ - if (strcmp(remote->name, repository_format_partial_clone)) { + if (!find_promisor_remote(remote->name)) { if (filter_options.choice) die(_("--filter can only be used with the remote configured in core.partialClone")); return; @@ -1607,7 +1608,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) if (depth || deepen_since || deepen_not.nr) deepen = 1; - if (filter_options.choice && !repository_format_partial_clone) + if (filter_options.choice && !has_promisor_remote()) die("--filter can only be used when extensions.partialClone is set"); if (all) { @@ -1641,7 +1642,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) } if (remote) { - if (filter_options.choice || repository_format_partial_clone) + if (filter_options.choice || has_promisor_remote()) fetch_one_setup_partial(remote); result = fetch_one(remote, argc, argv, prune_tags_ok); } else { diff --git a/builtin/gc.c b/builtin/gc.c index 871a56f1c5..42dfa3a23c 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -27,6 +27,7 @@ #include "pack-objects.h" #include "blob.h" #include "tree.h" +#include "promisor-remote.h" #define FAILED_RUN "failed to run %s" @@ -640,7 +641,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) argv_array_push(&prune, prune_expire); if (quiet) argv_array_push(&prune, "--no-progress"); - if (repository_format_partial_clone) + if (has_promisor_remote()) argv_array_push(&prune, "--exclude-promisor-objects"); if (run_command_v_opt(prune.argv, RUN_GIT_CMD)) diff --git a/builtin/repack.c b/builtin/repack.c index 45583683ee..26e02e3135 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -11,6 +11,7 @@ #include "midx.h" #include "packfile.h" #include "object-store.h" +#include "promisor-remote.h" static int delta_base_offset = 1; static int pack_kept_objects = -1; @@ -366,7 +367,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix) argv_array_push(&cmd.args, "--all"); argv_array_push(&cmd.args, "--reflog"); argv_array_push(&cmd.args, "--indexed-objects"); - if (repository_format_partial_clone) + if (has_promisor_remote()) argv_array_push(&cmd.args, "--exclude-promisor-objects"); if (write_bitmaps) argv_array_push(&cmd.args, "--write-bitmap-index"); diff --git a/cache-tree.c b/cache-tree.c index 9d454d24bc..a1ecb2a1fa 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -5,6 +5,7 @@ #include "cache-tree.h" #include "object-store.h" #include "replace-object.h" +#include "promisor-remote.h" #ifndef DEBUG #define DEBUG 0 @@ -357,7 +358,7 @@ static int update_one(struct cache_tree *it, } ce_missing_ok = mode == S_IFGITLINK || missing_ok || - (repository_format_partial_clone && + (has_promisor_remote() && ce_skip_worktree(ce)); if (is_null_oid(oid) || (!ce_missing_ok && !has_object_file(oid))) { diff --git a/connected.c b/connected.c index 1bba888eff..0eaaedee6a 100644 --- a/connected.c +++ b/connected.c @@ -4,6 +4,7 @@ #include "connected.h" #include "transport.h" #include "packfile.h" +#include "promisor-remote.h" /* * If we feed all the commits we want to verify to this command @@ -56,7 +57,7 @@ int check_connected(oid_iterate_fn fn, void *cb_data, argv_array_push(&rev_list.args,"rev-list"); argv_array_push(&rev_list.args, "--objects"); argv_array_push(&rev_list.args, "--stdin"); - if (repository_format_partial_clone) + if (has_promisor_remote()) argv_array_push(&rev_list.args, "--exclude-promisor-objects"); if (!opt->is_deepening_fetch) { argv_array_push(&rev_list.args, "--not"); diff --git a/list-objects-filter-options.c b/list-objects-filter-options.c index e8da2e8581..3b5ff55480 100644 --- a/list-objects-filter-options.c +++ b/list-objects-filter-options.c @@ -6,6 +6,7 @@ #include "list-objects.h" #include "list-objects-filter.h" #include "list-objects-filter-options.h" +#include "promisor-remote.h" /* * Parse value of the argument to the "filter" keyword. @@ -125,30 +126,31 @@ void partial_clone_register( const char *remote, const struct list_objects_filter_options *filter_options) { - /* - * Record the name of the partial clone remote in the - * config and in the global variable -- the latter is - * used throughout to indicate that partial clone is - * enabled and to expect missing objects. - */ - if (repository_format_partial_clone && - *repository_format_partial_clone && - strcmp(remote, repository_format_partial_clone)) - die(_("cannot change partial clone promisor remote")); + char *cfg_name; - git_config_set("core.repositoryformatversion", "1"); - git_config_set("extensions.partialclone", remote); + /* Check if it is already registered */ + if (!find_promisor_remote(remote)) { + git_config_set("core.repositoryformatversion", "1"); - repository_format_partial_clone = xstrdup(remote); + /* Add promisor config for the remote */ + cfg_name = xstrfmt("remote.%s.promisor", remote); + git_config_set(cfg_name, "true"); + free(cfg_name); + } /* * Record the initial filter-spec in the config as * the default for subsequent fetches from this remote. + * + * TODO: record it into remote..partialclonefilter */ core_partial_clone_filter_default = xstrdup(filter_options->filter_spec); git_config_set("core.partialclonefilter", core_partial_clone_filter_default); + + /* Make sure the config info are reset */ + promisor_remote_reinit(); } void partial_clone_get_default_filter_spec( diff --git a/packfile.c b/packfile.c index d1e6683ffe..7aaeea7693 100644 --- a/packfile.c +++ b/packfile.c @@ -16,6 +16,7 @@ #include "tree.h" #include "object-store.h" #include "midx.h" +#include "promisor-remote.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *sha1, @@ -2113,7 +2114,7 @@ int is_promisor_object(const struct object_id *oid) static int promisor_objects_prepared; if (!promisor_objects_prepared) { - if (repository_format_partial_clone) { + if (has_promisor_remote()) { for_each_packed_object(add_promisor_object, &promisor_objects, FOR_EACH_OBJECT_PROMISOR_ONLY); diff --git a/sha1-file.c b/sha1-file.c index cf88eeb147..f1acaa3254 100644 --- a/sha1-file.c +++ b/sha1-file.c @@ -32,6 +32,7 @@ #include "packfile.h" #include "fetch-object.h" #include "object-store.h" +#include "promisor-remote.h" /* The maximum size for an object header. */ #define MAX_HEADER_LEN 32 @@ -1309,15 +1310,16 @@ int oid_object_info_extended(struct repository *r, const struct object_id *oid, } /* Check if it is a missing object */ - if (fetch_if_missing && repository_format_partial_clone && + if (fetch_if_missing && has_promisor_remote() && !already_retried && r == the_repository) { /* - * TODO Investigate checking fetch_object() return - * TODO value and stopping on error here. - * TODO Pass a repository struct through fetch_object, - * such that arbitrary repositories work. + * TODO Investigate checking promisors_get_direct() + * TODO return value and stopping on error here. + * TODO Pass a repository struct through + * promisors_get_direct(), such that arbitrary + * repositories work. */ - fetch_objects(repository_format_partial_clone, real, 1); + promisors_get_direct(real, 1); already_retried = 1; continue; } diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index 8bbc7068ac..aafe55b8b7 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -653,7 +653,7 @@ partial_clone () { git -C client fsck && # Ensure that unneeded blobs are not inadvertently fetched. - test_config -C client extensions.partialclone "not a remote" && + test_config -C client remote.origin.promisor "false" && test_must_fail git -C client cat-file -e "$HASH1" && # But this blob was fetched, because clone performs an initial checkout diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh index 336f02a41a..d09dee1f14 100755 --- a/t/t5616-partial-clone.sh +++ b/t/t5616-partial-clone.sh @@ -42,7 +42,7 @@ test_expect_success 'do partial clone 1' ' test_cmp expect_1.oids observed.oids && test "$(git -C pc1 config --local core.repositoryformatversion)" = "1" && - test "$(git -C pc1 config --local extensions.partialclone)" = "origin" && + test "$(git -C pc1 config --local remote.origin.promisor)" = "true" && test "$(git -C pc1 config --local core.partialclonefilter)" = "blob:none" ' diff --git a/unpack-trees.c b/unpack-trees.c index 7570df481b..9ad157eeab 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -18,6 +18,7 @@ #include "fsmonitor.h" #include "object-store.h" #include "fetch-object.h" +#include "promisor-remote.h" /* * Error messages expected by scripts out of plumbing commands such as @@ -418,7 +419,7 @@ static int check_updates(struct unpack_trees_options *o) load_gitmodules_file(index, &state); enable_delayed_checkout(&state); - if (repository_format_partial_clone && o->update && !o->dry_run) { + if (has_promisor_remote() && o->update && !o->dry_run) { /* * Prefetch the objects that are to be checked out in the loop * below. @@ -435,8 +436,7 @@ static int check_updates(struct unpack_trees_options *o) } } if (to_fetch.nr) - fetch_objects(repository_format_partial_clone, - to_fetch.oid, to_fetch.nr); + promisors_get_direct(to_fetch.oid, to_fetch.nr); fetch_if_missing = fetch_if_missing_store; oid_array_clear(&to_fetch); } From patchwork Tue Dec 11 05:27:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723071 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F3F5C13AF for ; Tue, 11 Dec 2018 05:28:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E1DE42A7C2 for ; Tue, 11 Dec 2018 05:28:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D582D2A7C4; Tue, 11 Dec 2018 05:28:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3D74A2A7C2 for ; Tue, 11 Dec 2018 05:28:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729090AbeLKF2S (ORCPT ); Tue, 11 Dec 2018 00:28:18 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:32816 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729053AbeLKF2R (ORCPT ); Tue, 11 Dec 2018 00:28:17 -0500 Received: by mail-wr1-f65.google.com with SMTP id c14so12755163wrr.0 for ; Mon, 10 Dec 2018 21:28:15 -0800 (PST) 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=JopPhLuZtJC25WBpernMBJypqfqVE5+GOpbILRKKbwQ=; b=lcwpDEm661QerXRAGPi5RTKEI64ab7IsjnMsxxaGs2Y3BfUEEHtmbX4XSb1Jdjajua hnCAT4xqQFbO4uqvX4AGoC8q0qncUsvjRHUo8UfbT3U/lwUG+nX0HHfhjrV8yosXjyBk Fh+L4JWa7QbzlaBrAbmoKcZFLZasGyFFIqT4rF0TM3lQDt16pZEUA1ygkVL2H+gXzV4J 8pV6rdJebj6JRQASLvFjew58n6yEEYtZlCBZkjH2E6uElu5aBunZAbXbPdrlVYRvGE07 PDYqNyLqt+Zjf4NEBcPQLYfPTeFqO5DEzFnSgBr5Walftobu9QzpA2jMQ1N9iHImdwH4 wrvA== 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=JopPhLuZtJC25WBpernMBJypqfqVE5+GOpbILRKKbwQ=; b=JOuzkNf61jhiey5BLy14zgXDsmt/FXaBSPsmd6/TUOv8thIu0/T73uXUCpqDQWFMF+ aMgVYxBi0imTOrHktP03K8pPzW17E0+0xys/VVAtWFVEPlFD9TTG9KGXq2/ZhDzj+Zjn H3mG27ljZ9IwyiSazu2hWjvXK7229BzgKL1tw94xlEDjPdQLIPXIwTAoj71CRUOJWyKt OnSbQ3PLE/nRqCsF8qT5uA0haeEiHGHd6zhHAngKRqi5Y2UCYn8M2vEiRkc+atHKlZ+B GEiBoLdGWgtB2e9tbLZk9WM5UeqipLm8Qgh4bGsn/HVO3+JBoMCG8zPeOLut0peSeVVb Q5bQ== X-Gm-Message-State: AA+aEWYGjbYd8wSRPpW3Ju/YUfs/5+9Kq/nDLSgblgRgG8q8Piujah4p OCdr8y0BD0AavO2uYovjRagBnQoi X-Google-Smtp-Source: AFSGD/UlctMuDJ9UWi402JWWkp7c6OcoQVugT+Ysv9haJrugDdB15lVBZmMrynWgaqZyQP6r9mmxdw== X-Received: by 2002:adf:fc51:: with SMTP id e17mr11773786wrs.268.1544506094829; Mon, 10 Dec 2018 21:28:14 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:14 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli Subject: [PATCH v1 7/8] promisor-remote: parse remote.*.partialclonefilter Date: Tue, 11 Dec 2018 06:27:45 +0100 Message-Id: <20181211052746.16218-8-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This makes it possible to specify a different partial clone filter for each promisor remote. Signed-off-by: Christian Couder --- builtin/fetch.c | 2 +- list-objects-filter-options.c | 27 +++++++++++++++------------ list-objects-filter-options.h | 3 ++- promisor-remote.c | 13 +++++++++++-- promisor-remote.h | 5 ++++- t/t0410-partial-clone.sh | 2 +- t/t5601-clone.sh | 1 + t/t5616-partial-clone.sh | 2 +- 8 files changed, 36 insertions(+), 19 deletions(-) diff --git a/builtin/fetch.c b/builtin/fetch.c index 647a60b26c..53494c5864 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1489,7 +1489,7 @@ static inline void fetch_one_setup_partial(struct remote *remote) * the config. */ if (!filter_options.choice) - partial_clone_get_default_filter_spec(&filter_options); + partial_clone_get_default_filter_spec(&filter_options, remote->name); return; } diff --git a/list-objects-filter-options.c b/list-objects-filter-options.c index 3b5ff55480..ea0148f709 100644 --- a/list-objects-filter-options.c +++ b/list-objects-filter-options.c @@ -29,6 +29,9 @@ static int gently_parse_list_objects_filter( { const char *v0; + if (!arg) + return 0; + if (filter_options->choice) { if (errbuf) { strbuf_addstr( @@ -127,6 +130,7 @@ void partial_clone_register( const struct list_objects_filter_options *filter_options) { char *cfg_name; + char *filter_name; /* Check if it is already registered */ if (!find_promisor_remote(remote)) { @@ -141,27 +145,26 @@ void partial_clone_register( /* * Record the initial filter-spec in the config as * the default for subsequent fetches from this remote. - * - * TODO: record it into remote..partialclonefilter */ - core_partial_clone_filter_default = - xstrdup(filter_options->filter_spec); - git_config_set("core.partialclonefilter", - core_partial_clone_filter_default); + filter_name = xstrfmt("remote.%s.partialclonefilter", remote); + git_config_set(filter_name, filter_options->filter_spec); + free(filter_name); /* Make sure the config info are reset */ promisor_remote_reinit(); } void partial_clone_get_default_filter_spec( - struct list_objects_filter_options *filter_options) + struct list_objects_filter_options *filter_options, + const char *remote) { + struct promisor_remote *promisor = find_promisor_remote(remote); + /* * Parse default value, but silently ignore it if it is invalid. */ - if (!core_partial_clone_filter_default) - return; - gently_parse_list_objects_filter(filter_options, - core_partial_clone_filter_default, - NULL); + if (promisor) + gently_parse_list_objects_filter(filter_options, + promisor->partial_clone_filter, + NULL); } diff --git a/list-objects-filter-options.h b/list-objects-filter-options.h index af64e5c66f..8c10ec2d3a 100644 --- a/list-objects-filter-options.h +++ b/list-objects-filter-options.h @@ -75,6 +75,7 @@ void partial_clone_register( const char *remote, const struct list_objects_filter_options *filter_options); void partial_clone_get_default_filter_spec( - struct list_objects_filter_options *filter_options); + struct list_objects_filter_options *filter_options, + const char *remote); #endif /* LIST_OBJECTS_FILTER_OPTIONS_H */ diff --git a/promisor-remote.c b/promisor-remote.c index e4a0625426..d1bd9fbf49 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -60,6 +60,16 @@ static int promisor_remote_config(const char *var, const char *value, void *data free(remote_name); return 0; } + if (!strcmp(subkey, "partialclonefilter")) { + char *remote_name = xmemdupz(name, namelen); + + o = do_find_promisor_remote(remote_name); + if (!o) + o = promisor_remote_new(remote_name); + + free(remote_name); + return git_config_string(&o->partial_clone_filter, var, value); + } return 0; } @@ -76,8 +86,7 @@ static void promisor_remote_do_init(int force) if (repository_format_partial_clone && !do_find_promisor_remote(repository_format_partial_clone)) - promisor_remote_new(repository_format_partial_clone, - strlen(repository_format_partial_clone)); + promisor_remote_new(repository_format_partial_clone); } static inline void promisor_remote_init(void) diff --git a/promisor-remote.h b/promisor-remote.h index 873ddfb5ed..431edafcdd 100644 --- a/promisor-remote.h +++ b/promisor-remote.h @@ -3,10 +3,13 @@ /* * Promisor remote linked list - * Its information come from remote.XXX config entries. + * + * Information in its fields come from remote.XXX config entries or + * from extensions.partialclone or core.partialclonefilter. */ struct promisor_remote { const char *remote_name; + const char *partial_clone_filter; struct promisor_remote *next; }; diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh index ba3887f178..462229e445 100755 --- a/t/t0410-partial-clone.sh +++ b/t/t0410-partial-clone.sh @@ -26,7 +26,7 @@ promise_and_delete () { test_expect_success 'extensions.partialclone without filter' ' test_create_repo server && git clone --filter="blob:none" "file://$(pwd)/server" client && - git -C client config --unset core.partialclonefilter && + git -C client config --unset remote.origin.partialclonefilter && git -C client fetch origin ' diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index aafe55b8b7..72a04669e4 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -654,6 +654,7 @@ partial_clone () { # Ensure that unneeded blobs are not inadvertently fetched. test_config -C client remote.origin.promisor "false" && + git -C client config --unset remote.origin.partialclonefilter && test_must_fail git -C client cat-file -e "$HASH1" && # But this blob was fetched, because clone performs an initial checkout diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh index d09dee1f14..9057ad25d3 100755 --- a/t/t5616-partial-clone.sh +++ b/t/t5616-partial-clone.sh @@ -43,7 +43,7 @@ test_expect_success 'do partial clone 1' ' test_cmp expect_1.oids observed.oids && test "$(git -C pc1 config --local core.repositoryformatversion)" = "1" && test "$(git -C pc1 config --local remote.origin.promisor)" = "true" && - test "$(git -C pc1 config --local core.partialclonefilter)" = "blob:none" + test "$(git -C pc1 config --local remote.origin.partialclonefilter)" = "blob:none" ' # checkout master to force dynamic object fetch of blobs at HEAD. From patchwork Tue Dec 11 05:27:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christian Couder X-Patchwork-Id: 10723073 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B8DED13AF for ; Tue, 11 Dec 2018 05:28:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A83B12A7C2 for ; Tue, 11 Dec 2018 05:28:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9C9202A7C4; Tue, 11 Dec 2018 05:28:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 46C352A7C2 for ; Tue, 11 Dec 2018 05:28:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729093AbeLKF2T (ORCPT ); Tue, 11 Dec 2018 00:28:19 -0500 Received: from mail-wm1-f65.google.com ([209.85.128.65]:51318 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729077AbeLKF2S (ORCPT ); Tue, 11 Dec 2018 00:28:18 -0500 Received: by mail-wm1-f65.google.com with SMTP id s14so832308wmh.1 for ; Mon, 10 Dec 2018 21:28:17 -0800 (PST) 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=3umXdJ+Ln8CzJMCaZWJfXKN8IWYylfS6R0N4y4oLY78=; b=qkePJPsXRZ2oaQZ0TxMq98aF2qisIDJ+Fvp7bqf61oajVOUcMSA+SSVlBJhrP0Y1/Q CvnKFr4hy3/7DIq+4NZTwKZkhX8IMhwwelasnxlg56dJ0gqBBrShtzZyleYJaF0oV2ih reZ2V870apafn7ciN7mMVjZbySaZhouewKYQk1NMEMm+QkRqiUNI5VQlNy/nA2KB6NlW H21m9jVQDDkJ/dXuJ+WhzSCczDhjggpmn/aSPVpJZxdtpBVtO5SLEeh/1PSQ4Ir9yUIw yumpXCCBqitD4aK0SvYNdsJXkHVtF+OIQcbEhjLMpVtid6uEPc4NjMSvbVHueQMYyV8p AkjA== 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=3umXdJ+Ln8CzJMCaZWJfXKN8IWYylfS6R0N4y4oLY78=; b=ryCyAuXG/3dIcIAQm4NqJJZGHfItKKm1Y6wOlyAkhJjXfrkFhdsF+N8mKc5EfiD7iw zVDgae4lpjgfeMWN/vU+UiDihX7imWA8PI97px9aEXSfcgVdRJNL5fvfVV9Q8rdVTbOq GP0gU0b+wfcdszMoezyv3EYgVWz9n3iBvvwyU4PG+zktGbW9DLcxb8g8OHTJl2N8MUnp GAbT/YBXAKsd9wfbznMPiQ/VoVXXR6sZLvfseFLi/a05vRn+tFj3mozCziw5lwMh/u4O eQzxNZ3kouxS8vH4ib143OOvImZAruzXx1Iig2YA2tmUA3gxtyZVvFrbEPR+uxkoXIvX dPdw== X-Gm-Message-State: AA+aEWZJV5tANrmNdwDiGz7xRU3uu+OVLTkUQZgfcfOp0k7EqGoWXK1L DBrPiqqQxy8byR4tCWZeCKmFx8/J X-Google-Smtp-Source: AFSGD/UfOEsSdeYxFCaDB2JHa1FGEZrXHraF6Pd1zwhh7GZUhZff4prn6z6vhdWrXF7S3E+y2Lxy8w== X-Received: by 2002:a1c:d08b:: with SMTP id h133mr942472wmg.8.1544506096296; Mon, 10 Dec 2018 21:28:16 -0800 (PST) Received: from localhost.localdomain (89-95-107-230.abo.bbox.fr. [89.95.107.230]) by smtp.gmail.com with ESMTPSA id l197sm3708185wma.44.2018.12.10.21.28.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Dec 2018 21:28:15 -0800 (PST) From: Christian Couder X-Google-Original-From: Christian Couder To: git@vger.kernel.org Cc: Junio C Hamano , Jeff King , Ben Peart , Jonathan Tan , Jonathan Nieder , Stefan Beller , Nguyen Thai Ngoc Duy , Mike Hommey , Lars Schneider , Eric Wong , Christian Couder , Jeff Hostetler , Eric Sunshine , Beat Bolli , Christian Couder Subject: [PATCH v1 8/8] t0410: test fetching from many promisor remotes Date: Tue, 11 Dec 2018 06:27:46 +0100 Message-Id: <20181211052746.16218-9-chriscool@tuxfamily.org> X-Mailer: git-send-email 2.20.0.rc2.14.g1379de12fa.dirty In-Reply-To: <20181211052746.16218-1-chriscool@tuxfamily.org> References: <20181211052746.16218-1-chriscool@tuxfamily.org> MIME-Version: 1.0 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Christian Couder This shows that it is now possible to fetch objects from more than one promisor remote. Signed-off-by: Christian Couder --- t/t0410-partial-clone.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/t/t0410-partial-clone.sh b/t/t0410-partial-clone.sh index 462229e445..a09a53ab0d 100755 --- a/t/t0410-partial-clone.sh +++ b/t/t0410-partial-clone.sh @@ -182,8 +182,30 @@ test_expect_success 'fetching of missing objects works with ref-in-want enabled' grep "git< fetch=.*ref-in-want" trace ' +test_expect_success 'fetching of missing objects from another promisor remote' ' + git clone "file://$(pwd)/server" server2 && + test_commit -C server2 bar && + git -C server2 repack -a -d --write-bitmap-index && + HASH2=$(git -C server2 rev-parse bar) && + + git -C repo remote add server2 "file://$(pwd)/server2" && + git -C repo config remote.server2.promisor true && + git -C repo cat-file -p "$HASH2" && + + git -C repo fetch server2 && + rm -rf repo/.git/objects/* && + git -C repo cat-file -p "$HASH2" && + + # Ensure that the .promisor file is written, and check that its + # associated packfile contains the object + ls repo/.git/objects/pack/pack-*.promisor >promisorlist && + test_line_count = 1 promisorlist && + IDX=$(cat promisorlist | sed "s/promisor$/idx/") && + git verify-pack --verbose "$IDX" | grep "$HASH2" +' + test_expect_success 'fetching of missing blobs works' ' - rm -rf server repo && + rm -rf server server2 repo && test_create_repo server && test_commit -C server foo && git -C server repack -a -d --write-bitmap-index &&