From 7a6ddb87baf3741c6ff4314bae700c8314f83397 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Thu, 12 Mar 2026 22:44:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgit=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/commands/folders.rs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src-tauri/src/commands/folders.rs b/src-tauri/src/commands/folders.rs index 396a8bd..e250084 100644 --- a/src-tauri/src/commands/folders.rs +++ b/src-tauri/src/commands/folders.rs @@ -432,15 +432,31 @@ pub async fn get_git_branch(path: String) -> Result, AppCommandEr .await .map_err(AppCommandError::io)?; - if !output.status.success() { - return Ok(None); + if output.status.success() { + let branch = String::from_utf8_lossy(&output.stdout).trim().to_string(); + if !branch.is_empty() && branch != "HEAD" { + return Ok(Some(branch)); + } } - let branch = String::from_utf8_lossy(&output.stdout).trim().to_string(); - if branch.is_empty() || branch == "HEAD" { - return Ok(None); + // Fallback: symbolic-ref works on unborn branches (after git init, before first commit) + let sym_output = crate::process::tokio_command("git") + .args(["symbolic-ref", "--short", "HEAD"]) + .current_dir(&path) + .output() + .await + .map_err(AppCommandError::io)?; + + if sym_output.status.success() { + let branch = String::from_utf8_lossy(&sym_output.stdout) + .trim() + .to_string(); + if !branch.is_empty() { + return Ok(Some(branch)); + } } - Ok(Some(branch)) + + Ok(None) } #[tauri::command]