@@ -144,11 +144,15 @@ func runServ(c *cli.Context) error { | |||
}() | |||
} | |||
isWiki := false | |||
unitType := models.UnitTypeCode | |||
var ( | |||
isWiki bool | |||
unitType = models.UnitTypeCode | |||
unitName = "code" | |||
) | |||
if strings.HasSuffix(reponame, ".wiki") { | |||
isWiki = true | |||
unitType = models.UnitTypeWiki | |||
unitName = "wiki" | |||
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" | |||
} | |||
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) | |||
} | |||
@@ -304,7 +308,7 @@ func runServ(c *cli.Context) error { | |||
gitcmd = exec.Command(verb, repoPath) | |||
} | |||
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) | |||
} | |||
} |
@@ -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.Get("/repositories/:repoid/user/:userid/checkunituser", CheckUnitUser) | |||
m.Get("/repositories/:repoid/has-keys/:keyid", HasDeployKey) | |||
m.Get("/repositories/:repoid/wiki/init", InitWiki) | |||
m.Post("/push/update", PushUpdate) | |||
m.Get("/protectedbranch/:pbid/:userid", CanUserPush) | |||
m.Get("/repo/:owner/:repo", GetRepositoryByOwnerAndName) |
@@ -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) | |||
} |