gitdataai/lib/git/cmd/blob/blob_size.rs
2026-05-30 01:38:40 +08:00

27 lines
634 B
Rust

use serde::{Deserialize, Serialize};
use crate::{
bare::GitBare,
cmd::oid::ObjectId,
errors::{GitError, GitResult},
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlobSizeParams {
pub id: ObjectId,
pub path: String,
}
impl GitBare {
pub fn blob_size(&self, params: &BlobSizeParams) -> GitResult<u64> {
let repo = self.gix_repo()?;
let gix_id: gix::hash::ObjectId = (&params.id).try_into()?;
let header = repo.find_header(gix_id).map_err(|_| {
GitError::ObjectNotFound(params.id.as_str().to_string())
})?;
Ok(header.size() as u64)
}
}