Skip to main content

MetadataIndex

Trait MetadataIndex 

Source
pub trait MetadataIndex {
Show 16 methods // 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( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>; fn metadata_commit( &self, ref_name: &str, root: Oid, message: &str, ) -> 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; fn link( &self, ref_name: &str, a: &str, b: &str, forward: &str, reverse: &str, meta: Option<&[u8]>, ) -> Result<Oid, Error>; fn unlink( &self, ref_name: &str, a: &str, b: &str, forward: &str, reverse: &str, ) -> Result<Oid, Error>; fn linked( &self, ref_name: &str, key: &str, relation: Option<&str>, ) -> Result<Vec<(String, String)>, Error>; fn is_linked( &self, ref_name: &str, a: &str, b: &str, forward: &str, ) -> Result<bool, Error>; // Provided method fn metadata_set( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error> { ... }
}
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( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>

Set the raw metadata tree OID for a target.

Builds the fanout index tree and returns the new root tree OID. Does not commit; call Self::metadata_commit to persist.

Source

fn metadata_commit( &self, ref_name: &str, root: Oid, message: &str, ) -> Result<Oid, Error>

Commit a new root tree OID to ref_name with the given message.

Returns the new commit OID.

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).

Create a bidirectional link between two keys.

Writes <a>/<forward>/<b> and <b>/<reverse>/<a> in one commit. meta is optional blob content stored at each link entry.

Remove a bidirectional link between two keys.

Removes <a>/<forward>/<b> and <b>/<reverse>/<a> in one commit.

Source

fn linked( &self, ref_name: &str, key: &str, relation: Option<&str>, ) -> Result<Vec<(String, String)>, Error>

List all links for a key, optionally filtered by relation name.

Returns (relation, target) pairs.

Source

fn is_linked( &self, ref_name: &str, a: &str, b: &str, forward: &str, ) -> Result<bool, Error>

Check whether a specific link exists.

Provided Methods§

Source

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

👎Deprecated since 0.1.0:

use metadata + metadata_commit instead

Set the raw metadata tree OID for a target. Returns the new root tree OID committed under ref_name.

§Deprecated

Use Self::metadata followed by Self::metadata_commit instead.

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( &self, ref_name: &str, target: &Oid, tree: &Oid, opts: &MetadataOptions, ) -> Result<Oid, Error>

Source§

fn metadata_commit( &self, ref_name: &str, root: Oid, message: &str, ) -> 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

Source§

fn linked( &self, ref_name: &str, key: &str, relation: Option<&str>, ) -> Result<Vec<(String, String)>, Error>

Source§

fn is_linked( &self, ref_name: &str, a: &str, b: &str, forward: &str, ) -> Result<bool, Error>

Implementors§