getGitDir function

Future<String?> getGitDir(
  1. String cwd
)

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;
}