use serde::{Deserialize, Serialize};
use thiserror::Error;
use super::CommitRange;
use crate::ProviderError;
#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum BranchFreshness {
Current,
Behind,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct BranchUpdateObservation {
pub commit_range: CommitRange,
pub freshness: BranchFreshness,
}
#[derive(Clone, Debug, Eq, Error, PartialEq)]
pub enum BranchUpdateError {
#[error(
"change request head changed: expected {expected_head_sha}, observed {observed_head_sha}"
)]
StaleHead {
expected_head_sha: String,
observed_head_sha: String,
},
#[error(transparent)]
Provider(#[from] ProviderError),
}