summaryrefslogtreecommitdiff
path: root/builtin/fetch.c
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2019-11-05 18:56:19 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-11-08 06:26:44 (GMT)
commit6462d5eb9a5b23ab9cff4e3c92ff930600562d8f (patch)
tree179a428dc505d6d96fb04b08aaa800496eb35af1 /builtin/fetch.c
parentc32ca691c282fb34eeb29639340a2aa15f861606 (diff)
downloadgit-6462d5eb9a5b23ab9cff4e3c92ff930600562d8f.zip
git-6462d5eb9a5b23ab9cff4e3c92ff930600562d8f.tar.gz
git-6462d5eb9a5b23ab9cff4e3c92ff930600562d8f.tar.bz2
fetch: remove fetch_if_missing=0
In fetch_pack() (and all functions it calls), pass OBJECT_INFO_SKIP_FETCH_OBJECT whenever we query an object that could be a tree or blob that we do not want to be lazy-fetched even if it is absent. Thus, the only lazy-fetches occurring for trees and blobs are when resolving deltas. Thus, we can remove fetch_if_missing=0 from builtin/fetch.c. Remove this, and also add a test ensuring that such objects are not lazy-fetched. (We might be able to remove fetch_if_missing=0 from other places too, but I have limited myself to builtin/fetch.c in this commit because I have not written tests for the other commands yet.) Note that commits and tags may still be lazy-fetched. I limited myself to objects that could be trees or blobs here because Git does not support creating such commit- and tag-excluding clones yet, and even if such a clone were manually created, Git does not have good support for fetching a single commit (when fetching a commit, it and all its ancestors would be sent). Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/fetch.c')
-rw-r--r--builtin/fetch.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 863c858..5ff7367 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -1074,7 +1074,8 @@ static int check_exist_and_connected(struct ref *ref_map)
* we need all direct targets to exist.
*/
for (r = rm; r; r = r->next) {
- if (!has_object_file(&r->old_oid))
+ if (!has_object_file_with_flags(&r->old_oid,
+ OBJECT_INFO_SKIP_FETCH_OBJECT))
return -1;
}
@@ -1822,8 +1823,6 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
}
}
- fetch_if_missing = 0;
-
if (remote) {
if (filter_options.choice || has_promisor_remote())
fetch_one_setup_partial(remote);