From: Junio C Hamano Date: Sat, 7 Sep 2019 16:23:38 +0000 (-0700) Subject: Merge branch 'cc/multi-promisor' into next X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=46faa86955bfd488a2a99d9914835d265806c3ff;p=git Merge branch 'cc/multi-promisor' into next Teach the lazy clone machinery that there can be more than one promisor remote and consult them in order when downloading missing objects on demand. * cc/multi-promisor: Move core_partial_clone_filter_default to promisor-remote.c Move repository_format_partial_clone to promisor-remote.c Remove fetch-object.{c,h} in favor of promisor-remote.{c,h} remote: add promisor and partial clone config to the doc partial-clone: add multiple remotes in the doc t0410: test fetching from many promisor remotes builtin/fetch: remove unique promisor remote limitation promisor-remote: parse remote.*.partialclonefilter Use promisor_remote_get_direct() and has_promisor_remote() promisor-remote: use repository_format_partial_clone promisor-remote: add promisor_remote_reinit() promisor-remote: implement promisor_remote_get_direct() Add initial support for many promisor remotes fetch-object: make functions return an error code t0410: remove pipes after git commands --- 46faa86955bfd488a2a99d9914835d265806c3ff diff --cc builtin/fetch.c index 54d6b01892,5657d054ec..538f0e7207 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@@ -23,10 -23,8 +23,11 @@@ #include "packfile.h" #include "list-objects-filter-options.h" #include "commit-reach.h" +#include "branch.h" + #include "promisor-remote.h" +#define FORCED_UPDATES_DELAY_WARNING_IN_MS (10 * 1000) + static const char * const builtin_fetch_usage[] = { N_("git fetch [] [ [...]]"), N_("git fetch [] "), diff --cc builtin/repack.c index 632c0c0a79,df9a32c906..3b3dd14372 --- a/builtin/repack.c +++ b/builtin/repack.c @@@ -361,12 -370,10 +362,12 @@@ int cmd_repack(int argc, const char **a 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) + if (write_bitmaps > 0) argv_array_push(&cmd.args, "--write-bitmap-index"); + else if (write_bitmaps < 0) + argv_array_push(&cmd.args, "--write-bitmap-index-quiet"); if (use_delta_islands) argv_array_push(&cmd.args, "--delta-islands"); diff --cc cache-tree.c index c22161f987,64c285a746..0e5724fad7 --- a/cache-tree.c +++ b/cache-tree.c @@@ -5,9 -5,10 +5,10 @@@ #include "cache-tree.h" #include "object-store.h" #include "replace-object.h" + #include "promisor-remote.h" -#ifndef DEBUG -#define DEBUG 0 +#ifndef DEBUG_CACHE_TREE +#define DEBUG_CACHE_TREE 0 #endif struct cache_tree *cache_tree(void) diff --cc packfile.c index d98ac22876,50aaf93bc3..1a7d69fe32 --- a/packfile.c +++ b/packfile.c @@@ -16,7 -16,7 +16,8 @@@ #include "tree.h" #include "object-store.h" #include "midx.h" +#include "commit-graph.h" + #include "promisor-remote.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *sha1, diff --cc t/t0410-partial-clone.sh index 33e0aa4a89,2498e72a34..d4b7e535ea --- a/t/t0410-partial-clone.sh +++ b/t/t0410-partial-clone.sh @@@ -514,11 -562,9 +562,12 @@@ test_expect_success 'fetching of missin # 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 "$HASH" + IDX=$(sed "s/promisor$/idx/" promisorlist) && + git verify-pack --verbose "$IDX" >out && + grep "$HASH" out ' +# DO NOT add non-httpd-specific tests here, because the last part of this +# test script is only executed when httpd is available and enabled. + test_done