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]