30 lines
912 B
Rust
30 lines
912 B
Rust
use crate::GitError;
|
|
use crate::hook::sync::HookMetaDataSync;
|
|
use std::process::Command;
|
|
|
|
impl HookMetaDataSync {
|
|
pub async fn run_gc(&self) -> Result<(), GitError> {
|
|
let storage_path = self.repo.storage_path.clone();
|
|
let logger = self.logger.clone();
|
|
|
|
tokio::task::spawn_blocking(move || {
|
|
let status = Command::new("git")
|
|
.arg("-C")
|
|
.arg(&storage_path)
|
|
.arg("gc")
|
|
.arg("--auto")
|
|
.arg("--quiet")
|
|
.status()
|
|
.map_err(|e| GitError::IoError(format!("git gc failed: {}", e)))?;
|
|
|
|
if !status.success() {
|
|
slog::warn!(logger, "git gc exited with {:?}", status.code());
|
|
}
|
|
|
|
Ok::<(), GitError>(())
|
|
})
|
|
.await
|
|
.map_err(|e| GitError::Internal(format!("spawn_blocking join error: {}", e)))?
|
|
}
|
|
}
|