HEAD can point to a branch that no longer exists
0e6048fd38c5385d3cfaa9be821627d9c524915d
1 files changed
src/GitServer/Services/GitProcessService.cs
diff --git a/src/GitServer/Services/GitProcessService.cs b/src/GitServer/Services/GitProcessService.cs
index d0148be..45bfe67 100644
--- a/src/GitServer/Services/GitProcessService.cs
+++ b/src/GitServer/Services/GitProcessService.cs
@@ -163,7 +163,13 @@ public class GitProcessService(IOptions<GitServerOptions> options, ILogger<GitPr
{
var result = await RunGitAsync(repoPath, "symbolic-ref HEAD");
var branch = result.Trim();
- return branch.StartsWith("refs/heads/") ? branch["refs/heads/".Length..] : "main";
+ var headBranch = branch.StartsWith("refs/heads/") ? branch["refs/heads/".Length..] : "main";
+
+ // HEAD can point to a branch that no longer exists (e.g. "master" was never pushed,
+ // only "main" was) — fall back to whatever branch actually exists.
+ var branches = await GetBranches(repoPath);
+ if (branches.Contains(headBranch)) return headBranch;
+ return branches.FirstOrDefault() ?? headBranch;
}
public async Task<List<string>> GetBranches(string repoPath)