use std::path::{Path, PathBuf};
use crate::refs::common_dir;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RefStorageRoute {
pub storage_dir: PathBuf,
pub storage_name: String,
}
#[must_use]
pub fn route_ref_storage_with_namespace(
git_dir: &Path,
refname: &str,
namespace_prefix: Option<&str>,
) -> RefStorageRoute {
let (storage_dir, stor_name) = crate::worktree_ref::resolve_ref_storage(git_dir, refname);
let storage_name =
crate::ref_namespace::storage_ref_name_with_prefix(namespace_prefix, &stor_name);
RefStorageRoute {
storage_dir,
storage_name,
}
}
#[must_use]
pub fn resolve_common_dir(git_dir: &Path) -> PathBuf {
common_dir(git_dir).unwrap_or_else(|| git_dir.to_path_buf())
}