use std::fs;
use std::path::{Path, PathBuf};
pub fn detect_real_git_dir(dir: &Path) -> Option<PathBuf> {
let git_path = dir.join(".git");
let metadata = fs::metadata(&git_path).ok()?;
if !metadata.is_file() {
return None;
}
let first_line = fs::read_to_string(&git_path)
.ok()?
.lines()
.next()?
.trim()
.to_string();
let worktree_path = first_line.strip_prefix("gitdir: ")?;
let resolved = if Path::new(worktree_path).is_absolute() {
PathBuf::from(worktree_path)
} else {
git_path.parent()?.join(worktree_path)
};
let worktrees = resolved.to_string_lossy();
let prefix = worktrees.split("/worktrees/").next()?;
Some(PathBuf::from(prefix))
}