Re: [PATCH v4 2/8] sha1_file: rename LOOKUP_UNKNOWN_OBJECT
- From
- Jonathan Tan <jonathantanmy@google.com>
- Date
- Jun 21, 2017, 17:34 UTC
- Message-ID
- <20170621103442.3d21b9c4@twelve2.svl.corp.google.com>
- In-Reply-To
- <xmqqpodxqmqp.fsf@gitster.mtv.corp.google.com>
On Wed, 21 Jun 2017 10:22:38 -0700 Junio C Hamano <gitster@pobox.com> wrote:
Show 42 quoted lines
> Jonathan Tan <jonathantanmy@google.com> 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).