From 0e7a2d9d3c59a67e9681d8e6e0d813c191777e2c Mon Sep 17 00:00:00 2001
From: slene <vslene@gmail.com>
Date: Thu, 20 Mar 2014 09:16:48 +0800
Subject: [PATCH] directory redirect

---
 routers/repo/single.go | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/routers/repo/single.go b/routers/repo/single.go
index 1c4de34a59..3ab3463028 100644
--- a/routers/repo/single.go
+++ b/routers/repo/single.go
@@ -53,6 +53,12 @@ func Single(ctx *middleware.Context, params martini.Params) {
 	// Get tree path
 	treename := params["_1"]
 
+	if len(treename) > 0 && treename[len(treename)-1] == '/' {
+		ctx.Redirect("/"+ctx.Repo.Owner.LowerName+"/"+
+			ctx.Repo.Repository.Name+"/tree/"+params["branchname"]+"/"+treename[:len(treename)-1], 302)
+		return
+	}
+
 	// Branches.
 	brs, err := models.GetBranches(params["username"], params["reponame"])
 	if err != nil {
@@ -125,7 +131,7 @@ func Single(ctx *middleware.Context, params martini.Params) {
 		} else {
 			// current repo branch link
 			urlPrefix := "http://" + base.Domain + "/" + ctx.Repo.Owner.LowerName + "/" +
-				ctx.Repo.Repository.Name + "/blob/" + params["branchname"]
+				ctx.Repo.Repository.Name + "/tree/" + params["branchname"]
 
 			ctx.Data["ReadmeContent"] = string(base.RenderMarkdown(blob.Contents(), urlPrefix))
 		}