On Wed, 21 Jun 2017 10:22:38 -0700 Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jonathan Tan <jonathantanmy@xxxxxxxxxx> writes: > > > The LOOKUP_UNKNOWN_OBJECT flag was introduced in commit 46f0344 > > ("sha1_file: support reading from a loose object of unknown type", > > 2015-05-03) in order to support a feature in cat-file subsequently > > introduced in commit 39e4ae3 ("cat-file: teach cat-file a > > '--allow-unknown-type' option", 2015-05-03). Despite its name and > > location in cache.h, this flag is used neither in > > read_sha1_file_extended() nor in any of the lookup functions, but used > > only in sha1_object_info_extended(). > > > > Therefore rename this flag to OBJECT_INFO_ALLOW_UNKNOWN_TYPE, taking the > > name of the cat-file flag that invokes this feature, and move it closer > > to the declaration of sha1_object_info_extended(). Also add > > documentation for this flag. > > All of the above makes sense, but ... > > > diff --git a/cache.h b/cache.h > > index 4d92aae0e..e2ec45dfe 100644 > > --- a/cache.h > > +++ b/cache.h > > @@ -1207,7 +1207,6 @@ extern char *xdg_cache_home(const char *filename); > > > > /* object replacement */ > > #define LOOKUP_REPLACE_OBJECT 1 > > -#define LOOKUP_UNKNOWN_OBJECT 2 > > extern void *read_sha1_file_extended(const unsigned char *sha1, enum object_type *type, unsigned long *size, unsigned flag); > > static inline void *read_sha1_file(const unsigned char *sha1, enum object_type *type, unsigned long *size) > > { > > @@ -1866,6 +1865,8 @@ struct object_info { > > */ > > #define OBJECT_INFO_INIT {NULL} > > > > +/* Allow reading from a loose object file of unknown/bogus type */ > > +#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2 > > ... this contradicts the analysis given, doesn't it? > > Does something break if we change this to 1 (perhaps because in some > cases this bit reach read_sha1_file_extended())? I doubt it, but > leaving this to still define the bit to 2 makes readers wonder why. The issue is that LOOKUP_REPLACE_OBJECT (which is 1) is also used by sha1_object_info_extended(). So yes, it will break if OBJECT_INFO_ALLOW_UNKNOWN_TYPE is changed to 1. I'm resolving this in the next patch by also renaming LOOKUP_REPLACE_OBJECT and making it only used by sha1_object_info_extended(). I'll add a comment in the commit message locally, and will resend it out tomorrow (in case more comments come).