[PATCH v5 0/4] Don't lazy-fetch commits when parsing them
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- Dec 12, 2022, 22:48 UTC
- Message-ID
- <cover.1670885252.git.jonathantanmy@google.com>
- In-Reply-To
- <cover.1669839849.git.jonathantanmy@google.com>
Thanks everyone for taking a look. Here's a reroll with safer path handling.
Jonathan Tan (4): object-file: remove OBJECT_INFO_IGNORE_LOOSE object-file: refactor map_loose_object_1() object-file: emit corruption errors when detected commit: don't lazy-fetch commits
commit.c | 15 ++++++- object-file.c | 108 ++++++++++++++++++++++++------------------------- object-store.h | 7 ++-- 3 files changed, 69 insertions(+), 61 deletions(-)
Range-diff against v4:
1: be0b08cac2 = 1: be0b08cac2 object-file: remove OBJECT_INFO_IGNORE_LOOSE
2: 4b2fb68743 = 2: 4b2fb68743 object-file: refactor map_loose_object_1()
3: 07d28db92c ! 3: a229ea0b11 object-file: emit corruption errors when detected
@@ object-file.c: static int loose_object_info(struct repository *r,
int status = 0;
+ int fd;
unsigned long mapsize;
-+ const char *path;
++ const char *path = NULL;
void *map;
git_zstream stream;
char hdr[MAX_HEADER_LEN];
@@ object-file.c: static int loose_object_info(struct repository *r,
+ fd = open_loose_object(r, oid, &path);
+ if (fd < 0) {
+ if (errno != ENOENT)
-+ error_errno(_("unable to open loose object %s"), path);
++ error_errno(_("unable to open loose object %s"), oid_to_hex(oid));
+ return -1;
+ }
+ map = map_fd(fd, path, &mapsize);
@@ object-file.c: static int loose_object_info(struct repository *r,
break;
}
-+ if (status && (flags & OBJECT_INFO_DIE_IF_CORRUPT))
++ if (status && path && (flags & OBJECT_INFO_DIE_IF_CORRUPT))
+ die(_("loose object %s (stored in %s) is corrupt"),
+ oid_to_hex(oid), path);
+
4: 1a0cd5b244 = 4: b54972118a commit: don't lazy-fetch commits-- 2.39.0.rc1.256.g54fd8350bd-goog