#![cfg_attr(
feature = "document-features",
cfg_attr(doc, doc = ::document_features::document_features!())
)]
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
#![deny(missing_docs, rust_2018_idioms, unsafe_code)]
use std::borrow::Cow;
use git_hash::{oid, ObjectId};
pub use git_object::bstr;
use git_object::bstr::{BStr, BString};
#[path = "store/mod.rs"]
mod store_impl;
pub use store_impl::{file, packed};
mod fullname;
pub mod name;
pub mod namespace;
pub mod transaction;
mod parse;
mod raw;
pub use raw::Reference;
mod target;
pub mod log;
pub mod peel;
pub mod store {
#[derive(Debug, PartialOrd, PartialEq, Ord, Eq, Hash, Clone, Copy)]
pub enum WriteReflog {
Always,
Normal,
Disable,
}
impl Default for WriteReflog {
fn default() -> Self {
WriteReflog::Normal
}
}
#[derive(Clone)]
#[allow(dead_code)]
pub(crate) struct Handle {
state: handle::State,
}
#[allow(dead_code)]
pub(crate) enum State {
Loose { store: file::Store },
}
pub(crate) mod general;
#[path = "general/handle/mod.rs"]
mod handle;
pub use handle::find;
use crate::file;
}
#[allow(dead_code)]
pub(crate) struct Store {
inner: store::State,
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
#[cfg_attr(feature = "serde1", derive(serde::Serialize, serde::Deserialize))]
pub struct FullName(pub(crate) BString);
#[derive(Hash, Debug, PartialEq, Eq, Ord, PartialOrd)]
#[repr(transparent)]
pub struct FullNameRef(BStr);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
pub struct PartialNameCow<'a>(Cow<'a, BStr>);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd)]
#[repr(transparent)]
pub struct PartialNameRef(BStr);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd)]
pub struct PartialName(BString);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
pub struct Namespace(BString);
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
#[cfg_attr(feature = "serde1", derive(serde::Serialize, serde::Deserialize))]
pub enum Kind {
Peeled,
Symbolic,
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
pub enum Category<'a> {
Tag,
LocalBranch,
RemoteBranch,
Note,
PseudoRef,
MainPseudoRef,
MainRef,
LinkedPseudoRef {
name: &'a BStr,
},
LinkedRef {
name: &'a BStr,
},
Bisect,
Rewritten,
WorktreePrivate,
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
#[cfg_attr(feature = "serde1", derive(serde::Serialize, serde::Deserialize))]
pub enum Target {
Peeled(ObjectId),
Symbolic(FullName),
}
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
pub enum TargetRef<'a> {
Peeled(&'a oid),
Symbolic(&'a FullNameRef),
}