]> source.dussan.org Git - gitea.git/commitdiff
Fix bug clone wiki (#15499)
authorLunny Xiao <xiaolunwen@gmail.com>
Thu, 15 Apr 2021 18:57:19 +0000 (02:57 +0800)
committerGitHub <noreply@github.com>
Thu, 15 Apr 2021 18:57:19 +0000 (19:57 +0100)
Fix #15494

Co-authored-by: Lauris BH <lauris@nix.lv>
routers/repo/http.go

index 2b79dddbbd69a813f675a119233f397b359f7662..95a56e4a2c22ada293f728b50e29ad42b7ee4e17 100644 (file)
@@ -103,9 +103,11 @@ func httpBase(ctx *context.Context) (h *serviceHandler) {
 
        isWiki := false
        var unitType = models.UnitTypeCode
+       var wikiRepoName string
        if strings.HasSuffix(reponame, ".wiki") {
                isWiki = true
                unitType = models.UnitTypeWiki
+               wikiRepoName = reponame
                reponame = reponame[:len(reponame)-5]
        }
 
@@ -314,6 +316,11 @@ func httpBase(ctx *context.Context) (h *serviceHandler) {
                        return
                }
 
+               if isWiki { // you cannot send wiki operation before create the repository
+                       ctx.HandleText(http.StatusNotFound, "Repository not found")
+                       return
+               }
+
                if owner.IsOrganization() && !setting.Repository.EnablePushCreateOrg {
                        ctx.HandleText(http.StatusForbidden, "Push to create is not enabled for organizations.")
                        return
@@ -363,6 +370,9 @@ func httpBase(ctx *context.Context) (h *serviceHandler) {
        r.URL.Path = strings.ToLower(r.URL.Path) // blue: In case some repo name has upper case name
 
        dir := models.RepoPath(username, reponame)
+       if isWiki {
+               dir = models.RepoPath(username, wikiRepoName)
+       }
 
        return &serviceHandler{cfg, w, r, dir, cfg.Env}
 }