Browse Source

fix private repo cannot trigger hook by SSH

Unknwon 9 years ago
parent
commit
3d0583df0f
4 changed files with 26 additions and 5 deletions
  1. 4 2
      cmd/web.go
  2. 1 1
      gogs.go
  3. 20 1
      routers/repo/setting.go
  4. 1 1
      templates/.VERSION

+ 4 - 2
cmd/web.go

@@ -461,7 +461,6 @@ func runWeb(ctx *cli.Context) {
 		m.Get("/branches", repo.Branches)
 		m.Get("/archive/*", repo.Download)
 		m.Get("/pulls2/", repo.PullRequest2)
-		m.Head("/hooks/trigger", repo.TriggerHook)
 
 		m.Group("", func() {
 			m.Get("/src/*", repo.Home)
@@ -479,7 +478,10 @@ func runWeb(ctx *cli.Context) {
 			m.Get(".git", repo.Home)
 		}, ignSignIn, middleware.RepoAssignment(true, true), middleware.RepoRef())
 
-		m.Any("/:reponame/*", ignSignInAndCsrf, repo.Http)
+		m.Group("/:reponame", func() {
+			m.Any("/*", ignSignInAndCsrf, repo.Http)
+			m.Head("/hooks/trigger", repo.TriggerHook)
+		})
 	})
 
 	// robots.txt

+ 1 - 1
gogs.go

@@ -17,7 +17,7 @@ import (
 	"github.com/gogits/gogs/modules/setting"
 )
 
-const APP_VER = "0.6.4.0806 Beta"
+const APP_VER = "0.6.4.0808 Beta"
 
 func init() {
 	runtime.GOMAXPROCS(runtime.NumCPU())

+ 20 - 1
routers/repo/setting.go

@@ -586,7 +586,26 @@ func getOrgRepoCtx(ctx *middleware.Context) (*OrgRepoCtx, error) {
 }
 
 func TriggerHook(ctx *middleware.Context) {
-	models.HookQueue.AddRepoID(ctx.Repo.Repository.Id)
+	u, err := models.GetUserByName(ctx.Params(":username"))
+	if err != nil {
+		if models.IsErrUserNotExist(err) {
+			ctx.Handle(404, "GetUserByName", err)
+		} else {
+			ctx.Handle(500, "GetUserByName", err)
+		}
+		return
+	}
+
+	repo, err := models.GetRepositoryByName(u.Id, ctx.Params(":reponame"))
+	if err != nil {
+		if models.IsErrRepoNotExist(err) {
+			ctx.Handle(404, "GetRepositoryByName", err)
+		} else {
+			ctx.Handle(500, "GetRepositoryByName", err)
+		}
+		return
+	}
+	models.HookQueue.AddRepoID(repo.Id)
 }
 
 func GitHooks(ctx *middleware.Context) {

+ 1 - 1
templates/.VERSION

@@ -1 +1 @@
-0.6.4.0806 Beta
+0.6.4.0808 Beta