зеркало из https://github.com/microsoft/git.git
object-store: prepare has_{sha1, object}_file to handle any repo
Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
afd69dcc21
Коммит
9b45f49981
|
@ -10,3 +10,33 @@ expression G;
|
|||
- read_object_file(
|
||||
+ repo_read_object_file(the_repository,
|
||||
E, F, G)
|
||||
|
||||
@@
|
||||
expression E;
|
||||
@@
|
||||
- has_sha1_file(
|
||||
+ repo_has_sha1_file(the_repository,
|
||||
E)
|
||||
|
||||
@@
|
||||
expression E;
|
||||
expression F;
|
||||
@@
|
||||
- has_sha1_file_with_flags(
|
||||
+ repo_has_sha1_file_with_flags(the_repository,
|
||||
E)
|
||||
|
||||
@@
|
||||
expression E;
|
||||
@@
|
||||
- has_object_file(
|
||||
+ repo_has_object_file(the_repository,
|
||||
E)
|
||||
|
||||
@@
|
||||
expression E;
|
||||
expression F;
|
||||
@@
|
||||
- has_object_file_with_flags(
|
||||
+ repo_has_object_file_with_flags(the_repository,
|
||||
E)
|
||||
|
|
|
@ -212,15 +212,27 @@ int read_loose_object(const char *path,
|
|||
* object_info. OBJECT_INFO_SKIP_CACHED is automatically set; pass
|
||||
* nonzero flags to also set other flags.
|
||||
*/
|
||||
extern int has_sha1_file_with_flags(const unsigned char *sha1, int flags);
|
||||
static inline int has_sha1_file(const unsigned char *sha1)
|
||||
int repo_has_sha1_file_with_flags(struct repository *r,
|
||||
const unsigned char *sha1, int flags);
|
||||
static inline int repo_has_sha1_file(struct repository *r,
|
||||
const unsigned char *sha1)
|
||||
{
|
||||
return has_sha1_file_with_flags(sha1, 0);
|
||||
return repo_has_sha1_file_with_flags(r, sha1, 0);
|
||||
}
|
||||
|
||||
#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
|
||||
#define has_sha1_file_with_flags(sha1, flags) repo_has_sha1_file_with_flags(the_repository, sha1, flags)
|
||||
#define has_sha1_file(sha1) repo_has_sha1_file(the_repository, sha1)
|
||||
#endif
|
||||
|
||||
/* Same as the above, except for struct object_id. */
|
||||
extern int has_object_file(const struct object_id *oid);
|
||||
extern int has_object_file_with_flags(const struct object_id *oid, int flags);
|
||||
int repo_has_object_file(struct repository *r, const struct object_id *oid);
|
||||
int repo_has_object_file_with_flags(struct repository *r,
|
||||
const struct object_id *oid, int flags);
|
||||
#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS
|
||||
#define has_object_file(oid) repo_has_object_file(the_repository, oid)
|
||||
#define has_object_file_with_flags(oid, flags) repo_has_object_file_with_flags(the_repository, oid, flags)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Return true iff an alternate object database has a loose object
|
||||
|
|
15
sha1-file.c
15
sha1-file.c
|
@ -1768,24 +1768,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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче