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
 | 
						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)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user