mirror of
https://github.com/git/git.git
synced 2026-01-11 21:33:13 +09:00
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 <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
22600c0452
commit
a95da5c8ae
@ -918,6 +918,14 @@ static int files_ref_iterator_advance(struct ref_iterator *ref_iterator)
|
||||
return ok;
|
||||
}
|
||||
|
||||
static int files_ref_iterator_seek(struct ref_iterator *ref_iterator,
|
||||
const char *prefix)
|
||||
{
|
||||
struct files_ref_iterator *iter =
|
||||
(struct files_ref_iterator *)ref_iterator;
|
||||
return ref_iterator_seek(iter->iter0, prefix);
|
||||
}
|
||||
|
||||
static int files_ref_iterator_peel(struct ref_iterator *ref_iterator,
|
||||
struct object_id *peeled)
|
||||
{
|
||||
@ -936,6 +944,7 @@ static void files_ref_iterator_release(struct ref_iterator *ref_iterator)
|
||||
|
||||
static struct ref_iterator_vtable files_ref_iterator_vtable = {
|
||||
.advance = files_ref_iterator_advance,
|
||||
.seek = files_ref_iterator_seek,
|
||||
.peel = files_ref_iterator_peel,
|
||||
.release = files_ref_iterator_release,
|
||||
};
|
||||
@ -2294,6 +2303,12 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)
|
||||
return ok;
|
||||
}
|
||||
|
||||
static int files_reflog_iterator_seek(struct ref_iterator *ref_iterator UNUSED,
|
||||
const char *prefix UNUSED)
|
||||
{
|
||||
BUG("ref_iterator_seek() called for reflog_iterator");
|
||||
}
|
||||
|
||||
static int files_reflog_iterator_peel(struct ref_iterator *ref_iterator UNUSED,
|
||||
struct object_id *peeled UNUSED)
|
||||
{
|
||||
@ -2309,6 +2324,7 @@ static void files_reflog_iterator_release(struct ref_iterator *ref_iterator)
|
||||
|
||||
static struct ref_iterator_vtable files_reflog_iterator_vtable = {
|
||||
.advance = files_reflog_iterator_advance,
|
||||
.seek = files_reflog_iterator_seek,
|
||||
.peel = files_reflog_iterator_peel,
|
||||
.release = files_reflog_iterator_release,
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user