From edb7967dc7c1910f54b44e5ea92fea8044d74b9b Mon Sep 17 00:00:00 2001
From: Josh Frye <joshfng@gmail.com>
Date: Thu, 3 Mar 2016 12:07:43 -0500
Subject: [PATCH] Set DefaultBranch to master when importing a new repo if
 possible

---
 models/repo.go | 52 ++++++++++++++++++++++++++------------------------
 1 file changed, 27 insertions(+), 25 deletions(-)

diff --git a/models/repo.go b/models/repo.go
index cb040d5b3..30abc5d43 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -662,6 +662,33 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) {
 		return repo, fmt.Errorf("Clone: %v", err)
 	}
 
+	// Check if repository is empty.
+	_, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1")
+	if err != nil {
+		if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") {
+			repo.IsBare = true
+		} else {
+			return repo, fmt.Errorf("check bare: %v - %s", err, stderr)
+		}
+	}
+
+	if !repo.IsBare {
+		// Try to get HEAD branch and set it as default branch.
+		gitRepo, err := git.OpenRepository(repoPath)
+		if err != nil {
+			log.Error(4, "OpenRepository: %v", err)
+			return repo, nil
+		}
+		headBranch, err := gitRepo.GetHEADBranch()
+		if err != nil {
+			log.Error(4, "GetHEADBranch: %v", err)
+			return repo, nil
+		}
+		if headBranch != nil {
+			repo.DefaultBranch = headBranch.Name
+		}
+	}
+
 	if opts.IsMirror {
 		if _, err = x.InsertOne(&Mirror{
 			RepoID:     repo.ID,
@@ -696,31 +723,6 @@ func CleanUpMigrateInfo(repo *Repository, repoPath string) (*Repository, error)
 		return repo, fmt.Errorf("save config file: %v", err)
 	}
 
-	// Check if repository is empty.
-	_, stderr, err := com.ExecCmdDir(repoPath, "git", "log", "-1")
-	if err != nil {
-		if strings.Contains(stderr, "fatal: bad default revision 'HEAD'") {
-			repo.IsBare = true
-		} else {
-			return repo, fmt.Errorf("check bare: %v - %s", err, stderr)
-		}
-	}
-
-	// Try to get HEAD branch and set it as default branch.
-	gitRepo, err := git.OpenRepository(repoPath)
-	if err != nil {
-		log.Error(4, "OpenRepository: %v", err)
-		return repo, nil
-	}
-	headBranch, err := gitRepo.GetHEADBranch()
-	if err != nil {
-		log.Error(4, "GetHEADBranch: %v", err)
-		return repo, nil
-	}
-	if headBranch != nil {
-		repo.DefaultBranch = headBranch.Name
-	}
-
 	return repo, UpdateRepository(repo, false)
 }