Browse Source

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>
maint
Stefan Beller 6 years ago committed by Junio C Hamano
parent
commit
9b45f49981
  1. 30
      contrib/coccinelle/the_repository.pending.cocci
  2. 22
      object-store.h
  3. 15
      sha1-file.c

30
contrib/coccinelle/the_repository.pending.cocci

@ -10,3 +10,33 @@ expression G; @@ -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)

22
object-store.h

@ -212,15 +212,27 @@ int read_loose_object(const char *path, @@ -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

@ -1768,24 +1768,27 @@ int force_object_loose(const struct object_id *oid, time_t mtime) @@ -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)

Loading…
Cancel
Save