Merge branch 'sb/more-repo-in-api'
The in-core repository instances are passed through more codepaths. * sb/more-repo-in-api: (23 commits) t/helper/test-repository: celebrate independence from the_repository path.h: make REPO_GIT_PATH_FUNC repository agnostic commit: prepare free_commit_buffer and release_commit_memory for any repo commit-graph: convert remaining functions to handle any repo submodule: don't add submodule as odb for push submodule: use submodule repos for object lookup pretty: prepare format_commit_message to handle arbitrary repositories commit: prepare logmsg_reencode to handle arbitrary repositories commit: prepare repo_unuse_commit_buffer to handle any repo commit: prepare get_commit_buffer to handle any repo commit-reach: prepare in_merge_bases[_many] to handle any repo commit-reach: prepare get_merge_bases to handle any repo commit-reach.c: allow get_merge_bases_many_0 to handle any repo commit-reach.c: allow remove_redundant to handle any repo commit-reach.c: allow merge_bases_many to handle any repo commit-reach.c: allow paint_down_to_common to handle any repo commit: allow parse_commit* to handle any repo object: parse_object to honor its repository argument object-store: prepare has_{sha1, object}_file to handle any repo object-store: prepare read_object_file to deal with any repo ...
This commit is contained in:
34
sha1-file.c
34
sha1-file.c
@ -1421,7 +1421,9 @@ int oid_object_info(struct repository *r,
|
||||
return type;
|
||||
}
|
||||
|
||||
static void *read_object(const unsigned char *sha1, enum object_type *type,
|
||||
static void *read_object(struct repository *r,
|
||||
const unsigned char *sha1,
|
||||
enum object_type *type,
|
||||
unsigned long *size)
|
||||
{
|
||||
struct object_id oid;
|
||||
@ -1433,7 +1435,7 @@ static void *read_object(const unsigned char *sha1, enum object_type *type,
|
||||
|
||||
hashcpy(oid.hash, sha1);
|
||||
|
||||
if (oid_object_info_extended(the_repository, &oid, &oi, 0) < 0)
|
||||
if (oid_object_info_extended(r, &oid, &oi, 0) < 0)
|
||||
return NULL;
|
||||
return content;
|
||||
}
|
||||
@ -1461,7 +1463,8 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
|
||||
* deal with them should arrange to call read_object() and give error
|
||||
* messages themselves.
|
||||
*/
|
||||
void *read_object_file_extended(const struct object_id *oid,
|
||||
void *read_object_file_extended(struct repository *r,
|
||||
const struct object_id *oid,
|
||||
enum object_type *type,
|
||||
unsigned long *size,
|
||||
int lookup_replace)
|
||||
@ -1471,10 +1474,10 @@ void *read_object_file_extended(const struct object_id *oid,
|
||||
const char *path;
|
||||
struct stat st;
|
||||
const struct object_id *repl = lookup_replace ?
|
||||
lookup_replace_object(the_repository, oid) : oid;
|
||||
lookup_replace_object(r, oid) : oid;
|
||||
|
||||
errno = 0;
|
||||
data = read_object(repl->hash, type, size);
|
||||
data = read_object(r, repl->hash, type, size);
|
||||
if (data)
|
||||
return data;
|
||||
|
||||
@ -1486,11 +1489,11 @@ void *read_object_file_extended(const struct object_id *oid,
|
||||
die(_("replacement %s not found for %s"),
|
||||
oid_to_hex(repl), oid_to_hex(oid));
|
||||
|
||||
if (!stat_sha1_file(the_repository, repl->hash, &st, &path))
|
||||
if (!stat_sha1_file(r, repl->hash, &st, &path))
|
||||
die(_("loose object %s (stored in %s) is corrupt"),
|
||||
oid_to_hex(repl), path);
|
||||
|
||||
if ((p = has_packed_and_bad(repl->hash)) != NULL)
|
||||
if ((p = has_packed_and_bad(r, repl->hash)) != NULL)
|
||||
die(_("packed object %s (stored in %s) is corrupt"),
|
||||
oid_to_hex(repl), p->pack_name);
|
||||
|
||||
@ -1814,7 +1817,7 @@ int force_object_loose(const struct object_id *oid, time_t mtime)
|
||||
|
||||
if (has_loose_object(oid))
|
||||
return 0;
|
||||
buf = read_object(oid->hash, &type, &len);
|
||||
buf = read_object(the_repository, oid->hash, &type, &len);
|
||||
if (!buf)
|
||||
return error(_("cannot read sha1_file for %s"), oid_to_hex(oid));
|
||||
hdrlen = xsnprintf(hdr, sizeof(hdr), "%s %"PRIuMAX , type_name(type), (uintmax_t)len) + 1;
|
||||
@ -1824,24 +1827,27 @@ int force_object_loose(const struct object_id *oid, time_t mtime)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int has_sha1_file_with_flags(const unsigned char *sha1, int flags)
|
||||
int repo_has_sha1_file_with_flags(struct repository *r,
|
||||
const unsigned char *sha1, int flags)
|
||||
{
|
||||
struct object_id oid;
|
||||
if (!startup_info->have_repository)
|
||||
return 0;
|
||||
hashcpy(oid.hash, sha1);
|
||||
return oid_object_info_extended(the_repository, &oid, NULL,
|
||||
return oid_object_info_extended(r, &oid, NULL,
|
||||
flags | OBJECT_INFO_SKIP_CACHED) >= 0;
|
||||
}
|
||||
|
||||
int has_object_file(const struct object_id *oid)
|
||||
int repo_has_object_file(struct repository *r,
|
||||
const struct object_id *oid)
|
||||
{
|
||||
return has_sha1_file(oid->hash);
|
||||
return repo_has_sha1_file(r, oid->hash);
|
||||
}
|
||||
|
||||
int has_object_file_with_flags(const struct object_id *oid, int flags)
|
||||
int repo_has_object_file_with_flags(struct repository *r,
|
||||
const struct object_id *oid, int flags)
|
||||
{
|
||||
return has_sha1_file_with_flags(oid->hash, flags);
|
||||
return repo_has_sha1_file_with_flags(r, oid->hash, flags);
|
||||
}
|
||||
|
||||
static void check_tree(const void *buf, size_t size)
|
||||
|
Reference in New Issue
Block a user