git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Christian Couder <christian.couder@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>, "Jeff King" <peff@peff.net>,
	"Ben Peart" <Ben.Peart@microsoft.com>,
	"Jonathan Tan" <jonathantanmy@google.com>,
	"Jonathan Nieder" <jrnieder@gmail.com>,
	"Nguyen Thai Ngoc Duy" <pclouds@gmail.com>,
	"Mike Hommey" <mh@glandium.org>,
	"Lars Schneider" <larsxschneider@gmail.com>,
	"Eric Wong" <e@80x24.org>,
	"Christian Couder" <chriscool@tuxfamily.org>,
	"Jeff Hostetler" <jeffhost@microsoft.com>,
	"Eric Sunshine" <sunshine@sunshineco.com>,
	"Beat Bolli" <dev+git@drbeat.li>,
	"SZEDER Gábor" <szeder.dev@gmail.com>,
	"Ramsay Jones" <ramsay@ramsayjones.plus.com>,
	"Derrick Stolee" <stolee@gmail.com>
Subject: [PATCH v6 06/15] promisor-remote: use repository_format_partial_clone
Date: Tue, 25 Jun 2019 15:40:30 +0200	[thread overview]
Message-ID: <20190625134039.21707-7-chriscool@tuxfamily.org> (raw)
In-Reply-To: <20190625134039.21707-1-chriscool@tuxfamily.org>

A remote specified using the extensions.partialClone config
option should be considered a promisor remote too.

For simplicity and to make things predictable, this promisor
remote should be either always the last one we try to get
objects from, or the first one. So it should always be either
at the end of the promisor remote list, or at its start.

We decided to make it the last one we try, because it is
likely that someone using many promisor remotes is doing so
because the other promisor remotes are better for some reason
(maybe they are closer or faster for some kind of objects)
than the origin, and the origin is likely to be the remote
specified by extensions.partialClone.

This justification is not very strong, but one choice had to
be made, and anyway the long term plan should be to make the
order somehow fully configurable.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 promisor-remote.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/promisor-remote.c b/promisor-remote.c
index 763d98aedd..6a8856f475 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -40,6 +40,18 @@ static struct promisor_remote *promisor_remote_lookup(const char *remote_name,
 	return NULL;
 }
 
+static void promisor_remote_move_to_tail(struct promisor_remote *r,
+					 struct promisor_remote *previous)
+{
+	if (previous)
+		previous->next = r->next;
+	else
+		promisors = r->next ? r->next : r;
+	r->next = NULL;
+	*promisors_tail = r;
+	promisors_tail = &r->next;
+}
+
 static int promisor_remote_config(const char *var, const char *value, void *data)
 {
 	const char *name;
@@ -76,6 +88,17 @@ static void promisor_remote_init(void)
 	initialized = 1;
 
 	git_config(promisor_remote_config, NULL);
+
+	if (repository_format_partial_clone) {
+		struct promisor_remote *o, *previous;
+
+		o = promisor_remote_lookup(repository_format_partial_clone,
+					   &previous);
+		if (o)
+			promisor_remote_move_to_tail(o, previous);
+		else
+			promisor_remote_new(repository_format_partial_clone);
+	}
 }
 
 static void promisor_remote_clear(void)
-- 
2.22.0.229.ga13d9ffdf7.dirty


  parent reply	other threads:[~2019-06-25 13:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-25 13:40 [PATCH v6 00/15] Many promisor remotes Christian Couder
2019-06-25 13:40 ` [PATCH v6 01/15] t0410: remove pipes after git commands Christian Couder
2019-06-25 13:40 ` [PATCH v6 02/15] fetch-object: make functions return an error code Christian Couder
2019-06-25 13:40 ` [PATCH v6 03/15] Add initial support for many promisor remotes Christian Couder
2019-06-25 13:40 ` [PATCH v6 04/15] promisor-remote: implement promisor_remote_get_direct() Christian Couder
2019-06-25 13:40 ` [PATCH v6 05/15] promisor-remote: add promisor_remote_reinit() Christian Couder
2019-06-25 13:40 ` Christian Couder [this message]
2019-06-25 13:40 ` [PATCH v6 07/15] Use promisor_remote_get_direct() and has_promisor_remote() Christian Couder
2019-06-25 13:40 ` [PATCH v6 08/15] promisor-remote: parse remote.*.partialclonefilter Christian Couder
2019-06-25 13:40 ` [PATCH v6 09/15] builtin/fetch: remove unique promisor remote limitation Christian Couder
2019-06-25 13:40 ` [PATCH v6 10/15] t0410: test fetching from many promisor remotes Christian Couder
2019-06-25 13:40 ` [PATCH v6 11/15] partial-clone: add multiple remotes in the doc Christian Couder
2019-06-25 13:40 ` [PATCH v6 12/15] remote: add promisor and partial clone config to " Christian Couder
2019-06-25 13:40 ` [PATCH v6 13/15] Remove fetch-object.{c,h} in favor of promisor-remote.{c,h} Christian Couder
2019-06-25 13:40 ` [PATCH v6 14/15] Move repository_format_partial_clone to promisor-remote.c Christian Couder
2019-06-25 13:40 ` [PATCH v6 15/15] Move core_partial_clone_filter_default " Christian Couder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190625134039.21707-7-chriscool@tuxfamily.org \
    --to=christian.couder@gmail.com \
    --cc=Ben.Peart@microsoft.com \
    --cc=chriscool@tuxfamily.org \
    --cc=dev+git@drbeat.li \
    --cc=e@80x24.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jeffhost@microsoft.com \
    --cc=jonathantanmy@google.com \
    --cc=jrnieder@gmail.com \
    --cc=larsxschneider@gmail.com \
    --cc=mh@glandium.org \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=ramsay@ramsayjones.plus.com \
    --cc=stolee@gmail.com \
    --cc=sunshine@sunshineco.com \
    --cc=szeder.dev@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).