}() | }() | ||||
} | } | ||||
isWiki := false | |||||
unitType := models.UnitTypeCode | |||||
var ( | |||||
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] | ||||
} | } | ||||
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) | ||||
} | } | ||||
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) | ||||
} | } | ||||
} | } |
// 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 | |||||
} |
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) |
// 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) | |||||
} |