65 lines · 2.0 KB · Rust
RawDownload
use crate::{FullName, Kind, Target}; /// A git _ref_ which is stored in a file.#[derive(Debug, PartialOrd, PartialEq, Ord, Eq, Hash, Clone)]pub struct Reference {    /// The path to uniquely identify this ref within its store.    pub name: FullName,    /// The target of the reference, either a symbolic reference by full name or an object by its id.    pub target: Target,} impl Reference {    /// Return the kind of ref.    pub fn kind(&self) -> Kind {        self.target.kind()    }} ///pub(crate) mod reflog; ///pub(crate) mod iter;///pub mod reference; mod init {    use std::path::PathBuf;     use crate::store_impl::file;     impl file::Store {        /// Create a new instance at the given `git_dir`, which commonly is a standard git repository with a        /// `refs/` subdirectory.        /// The `object_hash` defines which kind of hash we should recognize.        pub fn at(git_dir: impl Into<PathBuf>, write_reflog: file::WriteReflog, object_hash: git_hash::Kind) -> Self {            file::Store {                git_dir: git_dir.into(),                common_dir: None,                write_reflog,                namespace: None,                packed: git_features::fs::MutableSnapshot::new().into(),                object_hash,            }        }         /// Like [`at()`][file::Store::at()], but for _linked_ work-trees which use `git_dir` as private ref store and `common_dir` for        /// shared references.        pub fn for_linked_worktree(            git_dir: impl Into<PathBuf>,            common_dir: impl Into<PathBuf>,            write_reflog: file::WriteReflog,            object_hash: git_hash::Kind,        ) -> Self {            file::Store {                git_dir: git_dir.into(),                common_dir: Some(common_dir.into()),                write_reflog,                namespace: None,                packed: git_features::fs::MutableSnapshot::new().into(),                object_hash,            }        }    }}