mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	fix clone wiki failed via ssh (#5503)
This commit is contained in:
		
				
					committed by
					
						
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							ccea91652f
						
					
				
				
					commit
					ba75319157
				
			
							
								
								
									
										12
									
								
								cmd/serv.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								cmd/serv.go
									
									
									
									
									
								
							@@ -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)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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.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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user