Re: [PATCH v8 7/8] cache: add empty_tree_oid object
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 19, 2016, 20:31 UTC
- Message-ID
- <xmqqfuq01oww.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20160819000031.24854-8-jacob.e.keller@intel.com>
Jacob Keller <jacob.e.keller@intel.com> writes:
Show 5 quoted lines
> From: Jacob Keller <jacob.keller@gmail.com> > > Add an empty_tree_oid object which can be used in place of > EMPTY_TREE_SHA1_BIN_LITERAL for code which is being converted to struct > object_id.
How widely do you envision the users of this symbol would be spread across the entire codebase? I am debating myself if we need a singleton in-core copy like this (if we end up referring to it from everywhere), or we only need one level higher abstraction, e.g. "is_empty_tree_oid()" helper (in which case I do not think we even need a singleton; just imitate how is_empty_blob_sha1() is implemented).
Even if we need such a singleton, I think we avoid ".field = value" struct initializations in our code.
Show 34 quoted lines
>
> Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
> ---
> cache.h | 2 ++
> sha1_file.c | 3 +++
> 2 files changed, 5 insertions(+)
>
> diff --git a/cache.h b/cache.h
> index f30a4417efdf..da9f0be67d7b 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -964,6 +964,8 @@ static inline void oidclr(struct object_id *oid)
> #define EMPTY_BLOB_SHA1_BIN \
> ((const unsigned char *) EMPTY_BLOB_SHA1_BIN_LITERAL)
>
> +extern const struct object_id empty_tree_oid;
> +
> static inline int is_empty_blob_sha1(const unsigned char *sha1)
> {
> return !hashcmp(sha1, EMPTY_BLOB_SHA1_BIN);
> diff --git a/sha1_file.c b/sha1_file.c
> index 1e23fc186a02..10883d56a600 100644
> --- a/sha1_file.c
> +++ b/sha1_file.c
> @@ -38,6 +38,9 @@ static inline uintmax_t sz_fmt(size_t s) { return s; }
>
> const unsigned char null_sha1[20];
> const struct object_id null_oid;
> +const struct object_id empty_tree_oid = {
> + .hash = EMPTY_TREE_SHA1_BIN_LITERAL
> +};
>
> /*
> * This is meant to hold a *small* number of objects that you would