forked from NYANDEV/forgejo
fix clone wiki failed via ssh (#5503)
This commit is contained in:
parent
ccea91652f
commit
ba75319157
4 changed files with 76 additions and 4 deletions
12
cmd/serv.go
12
cmd/serv.go
|
@ -144,11 +144,15 @@ func runServ(c *cli.Context) error {
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
isWiki := false
|
var (
|
||||||
unitType := models.UnitTypeCode
|
isWiki bool
|
||||||
|
unitType = models.UnitTypeCode
|
||||||
|
unitName = "code"
|
||||||
|
)
|
||||||
if strings.HasSuffix(reponame, ".wiki") {
|
if strings.HasSuffix(reponame, ".wiki") {
|
||||||
isWiki = true
|
isWiki = true
|
||||||
unitType = models.UnitTypeWiki
|
unitType = models.UnitTypeWiki
|
||||||
|
unitName = "wiki"
|
||||||
reponame = reponame[:len(reponame)-5]
|
reponame = reponame[:len(reponame)-5]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +249,7 @@ func runServ(c *cli.Context) error {
|
||||||
clientMessage = "You do not have sufficient authorization for this action"
|
clientMessage = "You do not have sufficient authorization for this action"
|
||||||
}
|
}
|
||||||
fail(clientMessage,
|
fail(clientMessage,
|
||||||
"User %s does not have level %v access to repository %s",
|
"User %s does not have level %v access to repository %s's "+unitName,
|
||||||
user.Name, requestedMode, repoPath)
|
user.Name, requestedMode, repoPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,7 +308,7 @@ func runServ(c *cli.Context) error {
|
||||||
gitcmd = exec.Command(verb, repoPath)
|
gitcmd = exec.Command(verb, repoPath)
|
||||||
}
|
}
|
||||||
if isWiki {
|
if isWiki {
|
||||||
if err = repo.InitWiki(); err != nil {
|
if err = private.InitWiki(repo.ID); err != nil {
|
||||||
fail("Internal error", "Failed to init wiki repo: %v", err)
|
fail("Internal error", "Failed to init wiki repo: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
33
modules/private/wiki.go
Normal file
33
modules/private/wiki.go
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright 2018 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package private
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
)
|
||||||
|
|
||||||
|
// InitWiki initwiki via repo id
|
||||||
|
func InitWiki(repoID int64) error {
|
||||||
|
// Ask for running deliver hook and test pull request tasks.
|
||||||
|
reqURL := setting.LocalURL + fmt.Sprintf("api/internal/repositories/%d/wiki/init", repoID)
|
||||||
|
log.GitLogger.Trace("InitWiki: %s", reqURL)
|
||||||
|
|
||||||
|
resp, err := newInternalRequest(reqURL, "GET").Response()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
// All 2XX status codes are accepted and others will return an error
|
||||||
|
if resp.StatusCode/100 != 2 {
|
||||||
|
return fmt.Errorf("Failed to init wiki: %s", decodeJSONError(resp).Err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -82,6 +82,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
m.Post("/repositories/:repoid/keys/:keyid/update", UpdateDeployKey)
|
m.Post("/repositories/:repoid/keys/:keyid/update", UpdateDeployKey)
|
||||||
m.Get("/repositories/:repoid/user/:userid/checkunituser", CheckUnitUser)
|
m.Get("/repositories/:repoid/user/:userid/checkunituser", CheckUnitUser)
|
||||||
m.Get("/repositories/:repoid/has-keys/:keyid", HasDeployKey)
|
m.Get("/repositories/:repoid/has-keys/:keyid", HasDeployKey)
|
||||||
|
m.Get("/repositories/:repoid/wiki/init", InitWiki)
|
||||||
m.Post("/push/update", PushUpdate)
|
m.Post("/push/update", PushUpdate)
|
||||||
m.Get("/protectedbranch/:pbid/:userid", CanUserPush)
|
m.Get("/protectedbranch/:pbid/:userid", CanUserPush)
|
||||||
m.Get("/repo/:owner/:repo", GetRepositoryByOwnerAndName)
|
m.Get("/repo/:owner/:repo", GetRepositoryByOwnerAndName)
|
||||||
|
|
34
routers/private/wiki.go
Normal file
34
routers/private/wiki.go
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package private
|
||||||
|
|
||||||
|
import (
|
||||||
|
"code.gitea.io/gitea/models"
|
||||||
|
|
||||||
|
macaron "gopkg.in/macaron.v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// InitWiki initilizes wiki via repo id
|
||||||
|
func InitWiki(ctx *macaron.Context) {
|
||||||
|
repoID := ctx.ParamsInt64("repoid")
|
||||||
|
|
||||||
|
repo, err := models.GetRepositoryByID(repoID)
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, map[string]interface{}{
|
||||||
|
"err": err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = repo.InitWiki()
|
||||||
|
if err != nil {
|
||||||
|
ctx.JSON(500, map[string]interface{}{
|
||||||
|
"err": err.Error(),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.Status(202)
|
||||||
|
}
|
Loading…
Reference in a new issue