[PATCH v2 0/7] Lazy fetch with subprocess
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- Aug 11, 2020, 22:52 UTC
- Message-ID
- <cover.1597184948.git.jonathantanmy@google.com>
- In-Reply-To
- <20200724223844.2723397-1-jonathantanmy@google.com>
These patches are based on jc/no-update-fetch-head.
After the email exchange with Junio, I went back and took a look to see if I could accomplish what I needed without using NULL methods in the fetch negotiators. And I could do it - I just had to be more careful when iterating over refs and dereferencing them. You can see it in patch 5.
In version 1, I wrote that these needed to be done:
- Commit messages - User-facing documentation - A way to prevent a promisor-remote fetch from invoking another promisor-remote fetch (use a file as a lock?) - Remove no_dependents code (fetch-pack, transport)
1, 2, and 4 are already done. As for 3, we currently don't have this safeguard before this patch set, so I did not include one in this patch set either.
Jonathan Tan (7): negotiator/null: add null fetch negotiator fetch: allow refspecs specified through stdin fetch: avoid reading submodule config until needed fetch: only populate existing_refs if needed fetch-pack: do not lazy-fetch during ref iteration promisor-remote: lazy-fetch objects in subprocess fetch-pack: remove no_dependents code
Documentation/config/fetch.txt | 5 +- Documentation/git-fetch.txt | 4 + Documentation/technical/partial-clone.txt | 13 +- Makefile | 1 + builtin/fetch-pack.c | 4 - builtin/fetch.c | 42 ++++- fetch-negotiator.c | 5 + fetch-pack.c | 189 +++++++++------------- fetch-pack.h | 14 -- negotiator/null.c | 44 +++++ negotiator/null.h | 8 + promisor-remote.c | 46 +++--- remote-curl.c | 6 - repo-settings.c | 2 + repository.h | 1 + submodule-config.c | 5 +- t/t0410-partial-clone.sh | 2 +- t/t4067-diff-partial-clone.sh | 8 +- t/t5554-null-fetch-negotiator.sh | 22 +++ t/t5601-clone.sh | 2 +- t/t5616-partial-clone.sh | 20 +++ transport.c | 4 - transport.h | 7 - 23 files changed, 252 insertions(+), 202 deletions(-) create mode 100644 negotiator/null.c create mode 100644 negotiator/null.h create mode 100755 t/t5554-null-fetch-negotiator.sh
-- 2.28.0.236.gb10cc79966-goog