//! Copyright (c) 2022-2026 GitDataAi All rights reserved. use std::process::Command; use crate::bare::GitBare; use crate::error::{GitError, GitResult}; use crate::pb::{Branch, GetBranchRequest, RenameBranchRequest}; impl GitBare { pub fn rename_branch(&self, request: RenameBranchRequest) -> GitResult { crate::sanitize::validate_ref_name(&request.old_name)?; crate::sanitize::validate_ref_name(&request.new_name)?; let output = Command::new("git") .arg("--git-dir") .arg(&self.bare_dir) .args(["branch", "-m", &request.old_name, &request.new_name]) .output()?; if !output.status.success() { return Err(GitError::CommandFailed { status_code: output.status.code(), stderr: String::from_utf8_lossy(&output.stderr).into_owned(), }); } self.get_branch(GetBranchRequest { repository: request.repository, name: request.new_name, }) } }