reftable: add merged table view
This adds an abstract, read-only interface to the ref database. This primitive is used to construct the read view of the ref database (the read view is constructed by merging several *.ref files). It also provides the mechanism to provide a unified view of the refs in the main repository and the per-worktree refs. Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3b34f636df
commit
1ae2b8cda8
38
reftable/merged.h
Normal file
38
reftable/merged.h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright 2020 Google LLC
|
||||
|
||||
Use of this source code is governed by a BSD-style
|
||||
license that can be found in the LICENSE file or at
|
||||
https://developers.google.com/open-source/licenses/bsd
|
||||
*/
|
||||
|
||||
#ifndef MERGED_H
|
||||
#define MERGED_H
|
||||
|
||||
#include "pq.h"
|
||||
|
||||
struct reftable_merged_table {
|
||||
struct reftable_table *stack;
|
||||
size_t stack_len;
|
||||
uint32_t hash_id;
|
||||
|
||||
/* If unset, produce deletions. This is useful for compaction. For the
|
||||
* full stack, deletions should be produced. */
|
||||
int suppress_deletions;
|
||||
|
||||
uint64_t min;
|
||||
uint64_t max;
|
||||
};
|
||||
|
||||
struct merged_iter {
|
||||
struct reftable_iterator *stack;
|
||||
uint32_t hash_id;
|
||||
size_t stack_len;
|
||||
uint8_t typ;
|
||||
int suppress_deletions;
|
||||
struct merged_iter_pqueue pq;
|
||||
};
|
||||
|
||||
void merged_table_release(struct reftable_merged_table *mt);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user