diff --git a/models/wiki.go b/models/wiki.go index 690da707c65..d864505d56c 100644 --- a/models/wiki.go +++ b/models/wiki.go @@ -84,7 +84,11 @@ func (repo *Repository) LocalWikiPath() string { func (repo *Repository) UpdateLocalWiki() error { // Don't pass branch name here because it fails to clone and // checkout to a specific branch when wiki is an empty repository. - return UpdateLocalCopyBranch(repo.WikiPath(), repo.LocalWikiPath(), "") + var branch = "" + if com.IsExist(repo.LocalWikiPath()) { + branch = "master" + } + return UpdateLocalCopyBranch(repo.WikiPath(), repo.LocalWikiPath(), branch) } func discardLocalWikiChanges(localPath string) error { diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index 2633ae9ceae..c1c05d305a3 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -177,6 +177,10 @@ func findWikiRepoCommit(ctx *context.Context) (*git.Repository, *git.Commit, err // ctx.Handle(500, "OpenRepository", err) return nil, nil, err } + if !wikiRepo.IsBranchExist("master") { + return wikiRepo, nil, nil + } + commit, err := wikiRepo.GetBranchCommit("master") if err != nil { ctx.Handle(500, "GetBranchCommit", err) @@ -190,6 +194,9 @@ func renderWikiPage(ctx *context.Context, isViewPage bool) (*git.Repository, *gi if err != nil { return nil, nil } + if commit == nil { + return wikiRepo, nil + } // Get page list. if isViewPage { @@ -210,7 +217,7 @@ func renderWikiPage(ctx *context.Context, isViewPage bool) (*git.Repository, *gi } pages = append(pages, PageMeta{ Name: models.ToWikiPageName(name), - URL: models.ToWikiPageURL(name), + URL: name, }) } } @@ -308,6 +315,11 @@ func Wiki(ctx *context.Context) { if ctx.Written() { return } + if entry == nil { + ctx.Data["Title"] = ctx.Tr("repo.wiki") + ctx.HTML(200, tplWikiStart) + return + } ename := entry.Name() if !markdown.IsMarkdownFile(ename) { @@ -362,7 +374,7 @@ func WikiPages(ctx *context.Context) { } pages = append(pages, PageMeta{ Name: models.ToWikiPageName(name), - URL: models.ToWikiPageURL(name), + URL: name, Updated: c.Author.When, }) } @@ -480,7 +492,7 @@ func EditWikiPost(ctx *context.Context, form auth.NewWikiForm) { return } - oldWikiPath := ctx.Params(":page") + oldWikiPath := models.ToWikiPageURL(ctx.Params(":page")) newWikiPath := models.ToWikiPageURL(form.Title) if err := ctx.Repo.Repository.EditWikiPage(ctx.User, oldWikiPath, newWikiPath, form.Content, form.Message); err != nil { @@ -493,7 +505,7 @@ func EditWikiPost(ctx *context.Context, form auth.NewWikiForm) { // DeleteWikiPagePost delete wiki page func DeleteWikiPagePost(ctx *context.Context) { - pageURL := ctx.Params(":page") + pageURL := models.ToWikiPageURL(ctx.Params(":page")) if len(pageURL) == 0 { pageURL = "Home" }