Skip to main content

MetadataIndex

Trait MetadataIndex 

Source
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 Oidgit2::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§

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

fn metadata_get_ref(&self, ref_name: &str) -> String

Return the resolved ref name (identity for now, but allows future indirection).

Implementations on Foreign Types§

Source§

impl MetadataIndex for Repository

Source§

fn metadata_list(&self, ref_name: &str) -> Result<Vec<(Oid, Oid)>, Error>

Source§

fn metadata_get( &self, ref_name: &str, target: &Oid, ) -> Result<Option<Oid>, Error>

Source§

fn metadata_set( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>

Source§

fn metadata_show( &self, ref_name: &str, target: &Oid, ) -> Result<Vec<MetadataEntry>, Error>

Source§

fn metadata_add( &self, ref_name: &str, target: &Oid, path: &str, content: Option<&[u8]>, opts: &MetadataOptions, ) -> Result<Oid, Error>

Source§

fn metadata_remove_paths( &self, ref_name: &str, target: &Oid, patterns: &[&str], keep: bool, ) -> Result<bool, Error>

Source§

fn metadata_remove(&self, ref_name: &str, target: &Oid) -> Result<bool, Error>

Source§

fn metadata_copy( &self, ref_name: &str, from: &Oid, to: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>

Source§

fn metadata_prune( &self, ref_name: &str, dry_run: bool, ) -> Result<Vec<Oid>, Error>

Source§

fn metadata_get_ref(&self, ref_name: &str) -> String

Implementors§