pub trait MetadataIndex {
// Required methods
fn metadata_list(&self, ref_name: &str) -> Result<Vec<(Oid, Oid)>, Error>;
fn metadata_get(
&self,
ref_name: &str,
target: &Oid,
) -> Result<Option<Oid>, Error>;
fn metadata_set(
&self,
ref_name: &str,
target: &Oid,
tree: &Oid,
opts: &MetadataOptions,
) -> Result<Oid, Error>;
fn metadata_show(
&self,
ref_name: &str,
target: &Oid,
) -> Result<Vec<MetadataEntry>, Error>;
fn metadata_add(
&self,
ref_name: &str,
target: &Oid,
path: &str,
content: Option<&[u8]>,
opts: &MetadataOptions,
) -> Result<Oid, Error>;
fn metadata_remove_paths(
&self,
ref_name: &str,
target: &Oid,
patterns: &[&str],
keep: bool,
) -> Result<bool, Error>;
fn metadata_remove(
&self,
ref_name: &str,
target: &Oid,
) -> Result<bool, Error>;
fn metadata_copy(
&self,
ref_name: &str,
from: &Oid,
to: &Oid,
opts: &MetadataOptions,
) -> Result<Oid, Error>;
fn metadata_prune(
&self,
ref_name: &str,
dry_run: bool,
) -> Result<Vec<Oid>, Error>;
fn metadata_get_ref(&self, ref_name: &str) -> String;
}Expand description
A metadata index maps Oid → git2::Tree, stored as a fanout tree
under a Git reference (e.g. refs/metadata/commits).
This is analogous to Git notes, which map Oid → Blob, but metadata entries are trees containing arbitrary paths.
Required Methods§
Sourcefn metadata_list(&self, ref_name: &str) -> Result<Vec<(Oid, Oid)>, Error>
fn metadata_list(&self, ref_name: &str) -> Result<Vec<(Oid, Oid)>, Error>
List all targets that have metadata entries.
Returns (target_oid, tree_oid) pairs.
Sourcefn metadata_get(
&self,
ref_name: &str,
target: &Oid,
) -> Result<Option<Oid>, Error>
fn metadata_get( &self, ref_name: &str, target: &Oid, ) -> Result<Option<Oid>, Error>
Get the raw metadata tree OID for a target.
Returns None if no entry exists.
Sourcefn metadata_set(
&self,
ref_name: &str,
target: &Oid,
tree: &Oid,
opts: &MetadataOptions,
) -> Result<Oid, Error>
fn metadata_set( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>
Set the raw metadata tree OID for a target.
Returns the new root tree OID committed under ref_name.
Sourcefn metadata_show(
&self,
ref_name: &str,
target: &Oid,
) -> Result<Vec<MetadataEntry>, Error>
fn metadata_show( &self, ref_name: &str, target: &Oid, ) -> Result<Vec<MetadataEntry>, Error>
Show all entries in the metadata tree for a target. Returns leaf blob entries with their paths and content.
Sourcefn metadata_add(
&self,
ref_name: &str,
target: &Oid,
path: &str,
content: Option<&[u8]>,
opts: &MetadataOptions,
) -> Result<Oid, Error>
fn metadata_add( &self, ref_name: &str, target: &Oid, path: &str, content: Option<&[u8]>, opts: &MetadataOptions, ) -> Result<Oid, Error>
Add a path entry (with optional blob content) to a target’s metadata tree.
If content is Some, a blob is created at path.
If content is None, an empty blob is created as a marker.
If the target has no metadata yet, a new tree is created.
Errors if the path already exists unless opts.force is true.
Sourcefn metadata_remove_paths(
&self,
ref_name: &str,
target: &Oid,
patterns: &[&str],
keep: bool,
) -> Result<bool, Error>
fn metadata_remove_paths( &self, ref_name: &str, target: &Oid, patterns: &[&str], keep: bool, ) -> Result<bool, Error>
Remove path entries matching patterns from a target’s metadata tree.
When keep is false, entries matching any pattern are removed.
When keep is true, only entries matching a pattern are kept.
Returns Ok(true) if anything was removed, Ok(false) otherwise.
Sourcefn metadata_remove(&self, ref_name: &str, target: &Oid) -> Result<bool, Error>
fn metadata_remove(&self, ref_name: &str, target: &Oid) -> Result<bool, Error>
Remove the entire metadata entry for a target.
Returns Ok(true) if removed, Ok(false) if no entry existed.
Sourcefn metadata_copy(
&self,
ref_name: &str,
from: &Oid,
to: &Oid,
opts: &MetadataOptions,
) -> Result<Oid, Error>
fn metadata_copy( &self, ref_name: &str, from: &Oid, to: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>
Copy the metadata tree from one target to another.
Errors if to already has metadata unless force is true.
Errors if from has no metadata.
Sourcefn metadata_prune(
&self,
ref_name: &str,
dry_run: bool,
) -> Result<Vec<Oid>, Error>
fn metadata_prune( &self, ref_name: &str, dry_run: bool, ) -> Result<Vec<Oid>, Error>
Remove metadata entries for targets that no longer exist in the object database. Returns the list of pruned target OIDs.
Sourcefn metadata_get_ref(&self, ref_name: &str) -> String
fn metadata_get_ref(&self, ref_name: &str) -> String
Return the resolved ref name (identity for now, but allows future indirection).