Skip to content
Clone
9e56ebc
38 lines 1.6 KB Rust
//! refs Operation trait for the refs module (reference access on bare repositories based on gix).
use gix::hash::ObjectId;
use crate::refs::types::{BranchInfo, HeadInfo, RefInfo, RefType, UpdateRefResult};
/// Operation trait for the refs module.
pub trait RefsOps {
fn refs_list(&self) -> Result<Vec<RefInfo>, crate::Error>;
/// List references by pattern.
fn refs_list_filtered(&self, pattern: &str) -> Result<Vec<RefInfo>, crate::Error>;
/// Get a single reference.
fn refs_get(&self, name: &str) -> Result<RefInfo, crate::Error>;
/// Resolve a reference to an object id.
fn refs_resolve(&self, name: &str) -> Result<ObjectId, crate::Error>;
/// Update a reference (CAS; returns Err on failure).
fn refs_update(
&self,
name: &str,
new: ObjectId,
expected: Option<ObjectId>,
) -> Result<UpdateRefResult, crate::Error>;
/// Delete a reference.
fn refs_delete(&self, name: &str) -> Result<(), crate::Error>;
/// Validate a reference name.
fn refs_validate_name(&self, name: &str) -> Result<(), crate::Error>;
/// Whether a branch is protected.
fn refs_is_branch_protected(&self, branch: &str) -> Result<bool, crate::Error>;
/// HEAD A reference.
fn refs_head(&self) -> Result<HeadInfo, crate::Error>;
/// List of branches.
fn refs_branches(&self, skip: u64, limit: u64) -> Result<Vec<BranchInfo>, crate::Error>;
/// Whether an object exists in a reference.
fn refs_is_object_in_ref(&self, object: &ObjectId, refname: &str)
-> Result<bool, crate::Error>;
/// Classify a reference type.
fn refs_classify(&self, name: &str) -> RefType;
}