Files

32 lines
949 B
Rust

//! Copyright (c) 2022-2026 GitDataAi All rights reserved.
use crate::bare::GitBare;
use crate::error::{GitError, GitResult};
impl GitBare {
pub fn init_repository(&self, bare: bool) -> GitResult<()> {
tracing::info!(
path = %self.bare_dir.display(),
bare = bare,
"initializing repository"
);
let mut args = vec!["init".to_string()];
if bare {
args.push("--bare".into());
}
args.push(self.bare_dir.to_string_lossy().into_owned());
let result = duct::cmd("git", &args)
.stdout_capture()
.stderr_capture()
.unchecked()
.run()?;
if !result.status.success() {
return Err(GitError::CommandFailed {
status_code: result.status.code(),
stderr: String::from_utf8_lossy(&result.stderr).into_owned(),
});
}
Ok(())
}
}