Skip to content

Commit a95da5c

Browse files
pks-tgitster
authored andcommitted
refs/iterator: implement seeking for files iterators
Implement seeking for "files" iterators. As we simply use a ref-cache iterator under the hood the implementation is straight-forward. Note that we do not implement seeking on reflog iterators, same as with the "reftable" backend. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 22600c0 commit a95da5c

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

refs/files-backend.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,14 @@ static int files_ref_iterator_advance(struct ref_iterator *ref_iterator)
918918
return ok;
919919
}
920920

921+
static int files_ref_iterator_seek(struct ref_iterator *ref_iterator,
922+
const char *prefix)
923+
{
924+
struct files_ref_iterator *iter =
925+
(struct files_ref_iterator *)ref_iterator;
926+
return ref_iterator_seek(iter->iter0, prefix);
927+
}
928+
921929
static int files_ref_iterator_peel(struct ref_iterator *ref_iterator,
922930
struct object_id *peeled)
923931
{
@@ -936,6 +944,7 @@ static void files_ref_iterator_release(struct ref_iterator *ref_iterator)
936944

937945
static struct ref_iterator_vtable files_ref_iterator_vtable = {
938946
.advance = files_ref_iterator_advance,
947+
.seek = files_ref_iterator_seek,
939948
.peel = files_ref_iterator_peel,
940949
.release = files_ref_iterator_release,
941950
};
@@ -2294,6 +2303,12 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)
22942303
return ok;
22952304
}
22962305

2306+
static int files_reflog_iterator_seek(struct ref_iterator *ref_iterator UNUSED,
2307+
const char *prefix UNUSED)
2308+
{
2309+
BUG("ref_iterator_seek() called for reflog_iterator");
2310+
}
2311+
22972312
static int files_reflog_iterator_peel(struct ref_iterator *ref_iterator UNUSED,
22982313
struct object_id *peeled UNUSED)
22992314
{
@@ -2309,6 +2324,7 @@ static void files_reflog_iterator_release(struct ref_iterator *ref_iterator)
23092324

23102325
static struct ref_iterator_vtable files_reflog_iterator_vtable = {
23112326
.advance = files_reflog_iterator_advance,
2327+
.seek = files_reflog_iterator_seek,
23122328
.peel = files_reflog_iterator_peel,
23132329
.release = files_reflog_iterator_release,
23142330
};

0 commit comments

Comments
 (0)