getGitDir function
Resolve the .git directory (handles worktrees).
Implementation
Future<String?> getGitDir(String cwd) async {
final root = findGitRoot(cwd);
if (root == null) return null;
final gitPath = p.join(root, '.git');
final stat = FileStat.statSync(gitPath);
if (stat.type == FileSystemEntityType.directory) return gitPath;
if (stat.type == FileSystemEntityType.file) {
// Worktree - read gitdir
try {
final content = File(gitPath).readAsStringSync().trim();
if (content.startsWith('gitdir:')) {
return p.normalize(
p.join(root, content.substring('gitdir:'.length).trim()),
);
}
} catch (_) {}
}
return null;
}