sha1_file: rename LOOKUP_REPLACE_OBJECT
The LOOKUP_REPLACE_OBJECT flag controls whether the
lookup_replace_object() function is invoked by
sha1_object_info_extended(), read_sha1_file_extended(), and
lookup_replace_object_extended(), but it is not immediately clear which
functions accept that flag.
Therefore restrict this flag to only sha1_object_info_extended(),
renaming it appropriately to OBJECT_INFO_LOOKUP_REPLACE and adding some
documentation. Update read_sha1_file_extended() to have a boolean
parameter instead, and delete lookup_replace_object_extended().
parse_sha1_header() also passes this flag to
parse_sha1_header_extended() since commit 46f0344
("sha1_file: support
reading from a loose object of unknown type", 2015-05-03), but that has
had no effect since that commit. Therefore this patch also removes this
flag from that invocation.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
19fc5e84a7
commit
1f0c0d36c1
@ -56,7 +56,7 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
|
|||||||
struct object_context obj_context;
|
struct object_context obj_context;
|
||||||
struct object_info oi = OBJECT_INFO_INIT;
|
struct object_info oi = OBJECT_INFO_INIT;
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
unsigned flags = LOOKUP_REPLACE_OBJECT;
|
unsigned flags = OBJECT_INFO_LOOKUP_REPLACE;
|
||||||
const char *path = force_path;
|
const char *path = force_path;
|
||||||
|
|
||||||
if (unknown_type)
|
if (unknown_type)
|
||||||
@ -337,7 +337,8 @@ static void batch_object_write(const char *obj_name, struct batch_options *opt,
|
|||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
|
|
||||||
if (!data->skip_object_info &&
|
if (!data->skip_object_info &&
|
||||||
sha1_object_info_extended(data->oid.hash, &data->info, LOOKUP_REPLACE_OBJECT) < 0) {
|
sha1_object_info_extended(data->oid.hash, &data->info,
|
||||||
|
OBJECT_INFO_LOOKUP_REPLACE) < 0) {
|
||||||
printf("%s missing\n",
|
printf("%s missing\n",
|
||||||
obj_name ? obj_name : oid_to_hex(&data->oid));
|
obj_name ? obj_name : oid_to_hex(&data->oid));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
17
cache.h
17
cache.h
@ -1205,12 +1205,12 @@ extern char *xdg_config_home(const char *filename);
|
|||||||
*/
|
*/
|
||||||
extern char *xdg_cache_home(const char *filename);
|
extern char *xdg_cache_home(const char *filename);
|
||||||
|
|
||||||
/* object replacement */
|
extern void *read_sha1_file_extended(const unsigned char *sha1,
|
||||||
#define LOOKUP_REPLACE_OBJECT 1
|
enum object_type *type,
|
||||||
extern void *read_sha1_file_extended(const unsigned char *sha1, enum object_type *type, unsigned long *size, unsigned flag);
|
unsigned long *size, int lookup_replace);
|
||||||
static inline void *read_sha1_file(const unsigned char *sha1, enum object_type *type, unsigned long *size)
|
static inline void *read_sha1_file(const unsigned char *sha1, enum object_type *type, unsigned long *size)
|
||||||
{
|
{
|
||||||
return read_sha1_file_extended(sha1, type, size, LOOKUP_REPLACE_OBJECT);
|
return read_sha1_file_extended(sha1, type, size, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1232,13 +1232,6 @@ static inline const unsigned char *lookup_replace_object(const unsigned char *sh
|
|||||||
return do_lookup_replace_object(sha1);
|
return do_lookup_replace_object(sha1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const unsigned char *lookup_replace_object_extended(const unsigned char *sha1, unsigned flag)
|
|
||||||
{
|
|
||||||
if (!(flag & LOOKUP_REPLACE_OBJECT))
|
|
||||||
return sha1;
|
|
||||||
return lookup_replace_object(sha1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Read and unpack a sha1 file into memory, write memory to a sha1 file */
|
/* Read and unpack a sha1 file into memory, write memory to a sha1 file */
|
||||||
extern int sha1_object_info(const unsigned char *, unsigned long *);
|
extern int sha1_object_info(const unsigned char *, unsigned long *);
|
||||||
extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1);
|
extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1);
|
||||||
@ -1865,6 +1858,8 @@ struct object_info {
|
|||||||
*/
|
*/
|
||||||
#define OBJECT_INFO_INIT {NULL}
|
#define OBJECT_INFO_INIT {NULL}
|
||||||
|
|
||||||
|
/* Invoke lookup_replace_object() on the given hash */
|
||||||
|
#define OBJECT_INFO_LOOKUP_REPLACE 1
|
||||||
/* Allow reading from a loose object file of unknown/bogus type */
|
/* Allow reading from a loose object file of unknown/bogus type */
|
||||||
#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
|
#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
|
||||||
extern int sha1_object_info_extended(const unsigned char *, struct object_info *, unsigned flags);
|
extern int sha1_object_info_extended(const unsigned char *, struct object_info *, unsigned flags);
|
||||||
|
14
sha1_file.c
14
sha1_file.c
@ -2002,7 +2002,7 @@ int parse_sha1_header(const char *hdr, unsigned long *sizep)
|
|||||||
struct object_info oi = OBJECT_INFO_INIT;
|
struct object_info oi = OBJECT_INFO_INIT;
|
||||||
|
|
||||||
oi.sizep = sizep;
|
oi.sizep = sizep;
|
||||||
return parse_sha1_header_extended(hdr, &oi, LOOKUP_REPLACE_OBJECT);
|
return parse_sha1_header_extended(hdr, &oi, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *unpack_sha1_file(void *map, unsigned long mapsize, enum object_type *type, unsigned long *size, const unsigned char *sha1)
|
static void *unpack_sha1_file(void *map, unsigned long mapsize, enum object_type *type, unsigned long *size, const unsigned char *sha1)
|
||||||
@ -2969,7 +2969,9 @@ int sha1_object_info_extended(const unsigned char *sha1, struct object_info *oi,
|
|||||||
struct cached_object *co;
|
struct cached_object *co;
|
||||||
struct pack_entry e;
|
struct pack_entry e;
|
||||||
int rtype;
|
int rtype;
|
||||||
const unsigned char *real = lookup_replace_object_extended(sha1, flags);
|
const unsigned char *real = (flags & OBJECT_INFO_LOOKUP_REPLACE) ?
|
||||||
|
lookup_replace_object(sha1) :
|
||||||
|
sha1;
|
||||||
|
|
||||||
co = find_cached_object(real);
|
co = find_cached_object(real);
|
||||||
if (co) {
|
if (co) {
|
||||||
@ -3025,7 +3027,8 @@ int sha1_object_info(const unsigned char *sha1, unsigned long *sizep)
|
|||||||
|
|
||||||
oi.typep = &type;
|
oi.typep = &type;
|
||||||
oi.sizep = sizep;
|
oi.sizep = sizep;
|
||||||
if (sha1_object_info_extended(sha1, &oi, LOOKUP_REPLACE_OBJECT) < 0)
|
if (sha1_object_info_extended(sha1, &oi,
|
||||||
|
OBJECT_INFO_LOOKUP_REPLACE) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
@ -3107,13 +3110,14 @@ static void *read_object(const unsigned char *sha1, enum object_type *type,
|
|||||||
void *read_sha1_file_extended(const unsigned char *sha1,
|
void *read_sha1_file_extended(const unsigned char *sha1,
|
||||||
enum object_type *type,
|
enum object_type *type,
|
||||||
unsigned long *size,
|
unsigned long *size,
|
||||||
unsigned flag)
|
int lookup_replace)
|
||||||
{
|
{
|
||||||
void *data;
|
void *data;
|
||||||
const struct packed_git *p;
|
const struct packed_git *p;
|
||||||
const char *path;
|
const char *path;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
const unsigned char *repl = lookup_replace_object_extended(sha1, flag);
|
const unsigned char *repl = lookup_replace ? lookup_replace_object(sha1)
|
||||||
|
: sha1;
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
data = read_object(repl, type, size);
|
data = read_object(repl, type, size);
|
||||||
|
Loading…
Reference in New Issue
Block a user