зеркало из https://github.com/microsoft/git.git
object-file: inline calls to read_object()
Since read_object() is these days just a thin wrapper around oid_object_info_extended(), and since it only has two callers, let's just inline those calls. This has a few positive outcomes: - it's a net reduction in source code lines - even though the callers end up with a few extra lines, they're now more flexible and can use object_info flags directly. So no more need to convert die_if_corrupt between parameter/flag, and we can ask for lookup replacement with a flag rather than doing it ourselves. - there's one fewer function in an already crowded namespace (e.g., the difference between read_object() and read_object_file() was not immediately obvious; now we only have one of them). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
4dbebc36b0
Коммит
b25562e63f
|
@ -1671,23 +1671,6 @@ int oid_object_info(struct repository *r,
|
|||
return type;
|
||||
}
|
||||
|
||||
static void *read_object(struct repository *r,
|
||||
const struct object_id *oid, enum object_type *type,
|
||||
unsigned long *size,
|
||||
int die_if_corrupt)
|
||||
{
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
void *content;
|
||||
oi.typep = type;
|
||||
oi.sizep = size;
|
||||
oi.contentp = &content;
|
||||
|
||||
if (oid_object_info_extended(r, oid, &oi, die_if_corrupt
|
||||
? OBJECT_INFO_DIE_IF_CORRUPT : 0) < 0)
|
||||
return NULL;
|
||||
return content;
|
||||
}
|
||||
|
||||
int pretend_object_file(void *buf, unsigned long len, enum object_type type,
|
||||
struct object_id *oid)
|
||||
{
|
||||
|
@ -1709,8 +1692,8 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
|
|||
|
||||
/*
|
||||
* This function dies on corrupt objects; the callers who want to
|
||||
* deal with them should arrange to call read_object() and give error
|
||||
* messages themselves.
|
||||
* deal with them should arrange to call oid_object_info_extended() and give
|
||||
* error messages themselves.
|
||||
*/
|
||||
void *read_object_file_extended(struct repository *r,
|
||||
const struct object_id *oid,
|
||||
|
@ -1718,16 +1701,19 @@ void *read_object_file_extended(struct repository *r,
|
|||
unsigned long *size,
|
||||
int lookup_replace)
|
||||
{
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
unsigned flags = OBJECT_INFO_DIE_IF_CORRUPT;
|
||||
void *data;
|
||||
const struct object_id *repl = lookup_replace ?
|
||||
lookup_replace_object(r, oid) : oid;
|
||||
|
||||
errno = 0;
|
||||
data = read_object(r, repl, type, size, 1);
|
||||
if (data)
|
||||
return data;
|
||||
oi.typep = type;
|
||||
oi.sizep = size;
|
||||
oi.contentp = &data;
|
||||
if (lookup_replace)
|
||||
flags |= OBJECT_INFO_LOOKUP_REPLACE;
|
||||
if (oid_object_info_extended(r, oid, &oi, flags))
|
||||
return NULL;
|
||||
|
||||
return NULL;
|
||||
return data;
|
||||
}
|
||||
|
||||
void *read_object_with_reference(struct repository *r,
|
||||
|
@ -2255,6 +2241,7 @@ int force_object_loose(const struct object_id *oid, time_t mtime)
|
|||
{
|
||||
void *buf;
|
||||
unsigned long len;
|
||||
struct object_info oi = OBJECT_INFO_INIT;
|
||||
enum object_type type;
|
||||
char hdr[MAX_HEADER_LEN];
|
||||
int hdrlen;
|
||||
|
@ -2262,8 +2249,10 @@ int force_object_loose(const struct object_id *oid, time_t mtime)
|
|||
|
||||
if (has_loose_object(oid))
|
||||
return 0;
|
||||
buf = read_object(the_repository, oid, &type, &len, 0);
|
||||
if (!buf)
|
||||
oi.typep = &type;
|
||||
oi.sizep = &len;
|
||||
oi.contentp = &buf;
|
||||
if (oid_object_info_extended(the_repository, oid, &oi, 0))
|
||||
return error(_("cannot read object for %s"), oid_to_hex(oid));
|
||||
hdrlen = format_object_header(hdr, sizeof(hdr), type, len);
|
||||
ret = write_loose_object(oid, hdr, hdrlen, buf, len, mtime, 0);
|
||||
|
|
|
@ -358,7 +358,7 @@ void assert_oid_type(const struct object_id *oid, enum object_type expect);
|
|||
/*
|
||||
* Enabling the object read lock allows multiple threads to safely call the
|
||||
* following functions in parallel: repo_read_object_file(), read_object_file(),
|
||||
* read_object_file_extended(), read_object_with_reference(), read_object(),
|
||||
* read_object_file_extended(), read_object_with_reference(),
|
||||
* oid_object_info() and oid_object_info_extended().
|
||||
*
|
||||
* obj_read_lock() and obj_read_unlock() may also be used to protect other
|
||||
|
|
Загрузка…
Ссылка в новой задаче