gitdataai/libs/git/ref_utils.rs
2026-04-14 19:02:01 +08:00

36 lines
946 B
Rust

//! Shared utility functions for reference name validation.
use crate::GitError;
/// # Rules
/// - Must not be empty
/// - Must not start with '.'
/// - Must not end with '/'
/// - Must not contain '..'
/// - Must not contain spaces, '~', '^', ':', '?', '*', '[', or '\'
///
/// # Returns
/// - `Ok(())` if name is valid
/// - `Err(GitError::InvalidRefName)` if name is invalid
pub fn validate_ref_name(name: &str) -> Result<(), GitError> {
if name.is_empty()
|| name.starts_with('.')
|| name.ends_with('/')
|| name.contains("..")
|| name.contains(' ')
|| name.contains('~')
|| name.contains('^')
|| name.contains(':')
|| name.contains('?')
|| name.contains('*')
|| name.contains('[')
|| name.contains('\\')
{
return Err(GitError::InvalidRefName(format!(
"invalid ref name: {}",
name
)));
}
Ok(())
}