From: Han-Wen Nienhuys <hanwen@xxxxxxxxxx> Before, the cached ref_iterator would return peel_object() output directly. This led to spurious differences in the GIT_TRACE_REFS output, depending on the ref storage backend active. Signed-off-by: Han-Wen Nienhuys <hanwen@xxxxxxxxxx> --- refs.c | 2 +- refs/ref-cache.c | 2 +- refs/refs-internal.h | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/refs.c b/refs.c index 261fd82beb98..8873854a44fb 100644 --- a/refs.c +++ b/refs.c @@ -2010,7 +2010,7 @@ int peel_iterated_oid(const struct object_id *base, struct object_id *peeled) oideq(current_ref_iter->oid, base))) return ref_iterator_peel(current_ref_iter, peeled); - return peel_object(base, peeled); + return !!peel_object(base, peeled); } int refs_create_symref(struct ref_store *refs, diff --git a/refs/ref-cache.c b/refs/ref-cache.c index 46f1e5428433..703a12959e1f 100644 --- a/refs/ref-cache.c +++ b/refs/ref-cache.c @@ -491,7 +491,7 @@ static int cache_ref_iterator_advance(struct ref_iterator *ref_iterator) static int cache_ref_iterator_peel(struct ref_iterator *ref_iterator, struct object_id *peeled) { - return peel_object(ref_iterator->oid, peeled); + return !!peel_object(ref_iterator->oid, peeled); } static int cache_ref_iterator_abort(struct ref_iterator *ref_iterator) diff --git a/refs/refs-internal.h b/refs/refs-internal.h index 467f4b3c936d..546a6b965dcc 100644 --- a/refs/refs-internal.h +++ b/refs/refs-internal.h @@ -453,6 +453,9 @@ void base_ref_iterator_free(struct ref_iterator *iter); */ typedef int ref_iterator_advance_fn(struct ref_iterator *ref_iterator); +/* + * Peels the current ref, returning 0 for success. + */ typedef int ref_iterator_peel_fn(struct ref_iterator *ref_iterator, struct object_id *peeled); -- gitgitgadget