//! 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, crate::Error>; /// List references by pattern. fn refs_list_filtered(&self, pattern: &str) -> Result, crate::Error>; /// Get a single reference. fn refs_get(&self, name: &str) -> Result; /// Resolve a reference to an object id. fn refs_resolve(&self, name: &str) -> Result; /// Update a reference (CAS; returns Err on failure). fn refs_update( &self, name: &str, new: ObjectId, expected: Option, ) -> Result; /// 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; /// HEAD A reference. fn refs_head(&self) -> Result; /// List of branches. fn refs_branches(&self, skip: u64, limit: u64) -> Result, crate::Error>; /// Whether an object exists in a reference. fn refs_is_object_in_ref(&self, object: &ObjectId, refname: &str) -> Result; /// Classify a reference type. fn refs_classify(&self, name: &str) -> RefType; }