MCPcopy Create free account
hub / github.com/git/git / reftable_ref_iterator_advance

Function reftable_ref_iterator_advance

refs/reftable-backend.c:606–703  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

604}
605
606static int reftable_ref_iterator_advance(struct ref_iterator *ref_iterator)
607{
608 struct reftable_ref_iterator *iter =
609 (struct reftable_ref_iterator *)ref_iterator;
610 struct reftable_ref_store *refs = iter->refs;
611 const char *referent = NULL;
612
613 while (!iter->err) {
614 int flags = 0;
615
616 iter->err = reftable_iterator_next_ref(&iter->iter, &iter->ref);
617 if (iter->err)
618 break;
619
620 /*
621 * The files backend only lists references contained in "refs/" unless
622 * the root refs are to be included. We emulate the same behaviour here.
623 */
624 if (!starts_with(iter->ref.refname, "refs/") &&
625 !(iter->flags & REFS_FOR_EACH_INCLUDE_ROOT_REFS &&
626 is_root_ref(iter->ref.refname))) {
627 continue;
628 }
629
630 if (iter->prefix_len &&
631 strncmp(iter->prefix, iter->ref.refname, iter->prefix_len)) {
632 iter->err = 1;
633 break;
634 }
635
636 if (iter->exclude_patterns && should_exclude_current_ref(iter))
637 continue;
638
639 if (iter->flags & REFS_FOR_EACH_PER_WORKTREE_ONLY &&
640 parse_worktree_ref(iter->ref.refname, NULL, NULL, NULL) !=
641 REF_WORKTREE_CURRENT)
642 continue;
643
644 switch (iter->ref.value_type) {
645 case REFTABLE_REF_VAL1:
646 oidread(&iter->oid, iter->ref.value.val1,
647 refs->base.repo->hash_algo);
648 break;
649 case REFTABLE_REF_VAL2:
650 oidread(&iter->oid, iter->ref.value.val2.value,
651 refs->base.repo->hash_algo);
652 oidread(&iter->peeled_oid, iter->ref.value.val2.target_value,
653 refs->base.repo->hash_algo);
654 break;
655 case REFTABLE_REF_SYMREF:
656 referent = refs_resolve_ref_unsafe(&iter->refs->base,
657 iter->ref.refname,
658 RESOLVE_REF_READING,
659 &iter->oid, &flags);
660 if (!referent)
661 oidclr(&iter->oid, refs->base.repo->hash_algo);
662 break;
663 default:

Callers

nothing calls this directly

Calls 13

starts_withFunction · 0.85
is_root_refFunction · 0.85
parse_worktree_refFunction · 0.85
oidreadFunction · 0.85
refs_resolve_ref_unsafeFunction · 0.85
oidclrFunction · 0.85
is_null_oidFunction · 0.85
check_refname_formatFunction · 0.85
refname_is_safeFunction · 0.85
ref_resolves_to_objectFunction · 0.85

Tested by

no test coverage detected