From 267870537dd7dc3cc0b7b81c2ac1a7be835c0f92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Justin=20Nu=C3=9F?= <justin.nuss@hmmh.de>
Date: Tue, 22 Jul 2014 14:46:04 +0200
Subject: [PATCH] Fix issue #278. Fall back to (default) branch for context
 data, if no branch selected

---
 modules/middleware/repo.go | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index cf8ce412e5..c6febffb2e 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -248,13 +248,24 @@ func RepoAssignment(redirect bool, args ...bool) martini.Handler {
 			ctx.Repo.IsWatching = models.IsWatching(ctx.User.Id, repo.Id)
 		}
 
-		ctx.Data["BranchName"] = ctx.Repo.BranchName
 		ctx.Data["TagName"] = ctx.Repo.TagName
 		brs, err := ctx.Repo.GitRepo.GetBranches()
 		if err != nil {
 			log.Error("RepoAssignment(GetBranches): %v", err)
 		}
 		ctx.Data["Branches"] = brs
+
+		// If not branch selected, try default one.
+		// If default branch doesn't exists, fall back to some other branch.
+		if ctx.Repo.BranchName == "" {
+			if ctx.Repo.Repository.DefaultBranch != "" && gitRepo.IsBranchExist(ctx.Repo.Repository.DefaultBranch) {
+				ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch
+			} else if len(brs) > 0 {
+				ctx.Repo.BranchName = brs[0]
+			}
+		}
+
+		ctx.Data["BranchName"] = ctx.Repo.BranchName
 		ctx.Data["CommitId"] = ctx.Repo.CommitId
 		ctx.Data["IsRepositoryWatching"] = ctx.Repo.IsWatching
 	}