Use promisor_remote_get_direct() and has_promisor_remote()
Instead of using the repository_format_partial_clone global and fetch_objects() directly, let's use has_promisor_remote() and promisor_remote_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 <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
faf2abf496
commit
b14ed5adaf
@ -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 [<options>] [<repository> [<refspec>...]]"),
|
||||
@ -1460,7 +1461,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;
|
||||
|
||||
/*
|
||||
@ -1468,7 +1469,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;
|
||||
}
|
||||
@ -1477,7 +1478,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 (!promisor_remote_find(remote->name)) {
|
||||
if (filter_options.choice)
|
||||
die(_("--filter can only be used with the remote "
|
||||
"configured in extensions.partialClone"));
|
||||
@ -1611,7 +1612,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) {
|
||||
@ -1645,7 +1646,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 {
|
||||
|
||||
Reference in New Issue
Block a user