From ecfa5f15944bc99f817222595ed793c526e268f8 Mon Sep 17 00:00:00 2001
From: Segev Finer <segev208@gmail.com>
Date: Mon, 15 Apr 2019 23:48:35 +0300
Subject: [PATCH] Fix forking an empty repository (#6637)

Fixes #6633

Signed-off-by: Segev Finer <segev@codeocean.com>
---
 models/repo.go          |  1 +
 modules/context/repo.go | 14 +++++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/models/repo.go b/models/repo.go
index f180179440..6069be1243 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -2436,6 +2436,7 @@ func ForkRepository(doer, u *User, oldRepo *Repository, name, desc string) (_ *R
 		Description:   desc,
 		DefaultBranch: oldRepo.DefaultBranch,
 		IsPrivate:     oldRepo.IsPrivate,
+		IsEmpty:       oldRepo.IsEmpty,
 		IsFork:        true,
 		ForkID:        oldRepo.ID,
 	}
diff --git a/modules/context/repo.go b/modules/context/repo.go
index 0cbd89a75f..2c6a4f5360 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -396,6 +396,13 @@ func RepoAssignment() macaron.Handler {
 			ctx.Data["IsStaringRepo"] = models.IsStaring(ctx.User.ID, repo.ID)
 		}
 
+		if repo.IsFork {
+			RetrieveBaseRepo(ctx, repo)
+			if ctx.Written() {
+				return
+			}
+		}
+
 		// repo is empty and display enable
 		if ctx.Repo.Repository.IsEmpty {
 			ctx.Data["BranchName"] = ctx.Repo.Repository.DefaultBranch
@@ -423,13 +430,6 @@ func RepoAssignment() macaron.Handler {
 		ctx.Data["BranchName"] = ctx.Repo.BranchName
 		ctx.Data["CommitID"] = ctx.Repo.CommitID
 
-		if repo.IsFork {
-			RetrieveBaseRepo(ctx, repo)
-			if ctx.Written() {
-				return
-			}
-		}
-
 		// People who have push access or have forked repository can propose a new pull request.
 		if ctx.Repo.CanWrite(models.UnitTypeCode) || (ctx.IsSigned && ctx.User.HasForkedRepo(ctx.Repo.Repository.ID)) {
 			// Pull request is allowed if this is a fork repository