diff options
author | mrsdizzie <info@mrsdizzie.com> | 2020-05-16 12:38:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-16 19:38:40 +0300 |
commit | b2b86ea8701cab901cd9e6a02c918aa5c61748d6 (patch) | |
tree | 14b590e7681a107ba6f5cf2cabcea8a4a4b4aaa4 /routers | |
parent | 6603045476e42d24606c82d5a6d740f8c06aa059 (diff) | |
download | gitea-b2b86ea8701cab901cd9e6a02c918aa5c61748d6.tar.gz gitea-b2b86ea8701cab901cd9e6a02c918aa5c61748d6.zip |
Support view individual commit for wiki pages (#11415)
Currently you can see a list of commit history for wiki pages but aren't able to view the commit diff itself. This adds the feature to view an individual commit to a wiki repo.
Closes #8999
Co-authored-by: Lauris BH <lauris@nix.lv>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'routers')
-rw-r--r-- | routers/repo/commit.go | 31 | ||||
-rw-r--r-- | routers/repo/wiki.go | 2 | ||||
-rw-r--r-- | routers/routes/routes.go | 6 |
3 files changed, 34 insertions, 5 deletions
diff --git a/routers/repo/commit.go b/routers/repo/commit.go index 77439f8873..a7a8d30d09 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -212,8 +212,25 @@ func Diff(ctx *context.Context) { userName := ctx.Repo.Owner.Name repoName := ctx.Repo.Repository.Name commitID := ctx.Params(":sha") + var ( + gitRepo *git.Repository + err error + repoPath string + ) + + if ctx.Data["PageIsWiki"] != nil { + gitRepo, err = git.OpenRepository(ctx.Repo.Repository.WikiPath()) + if err != nil { + ctx.ServerError("Repo.GitRepo.GetCommit", err) + return + } + repoPath = ctx.Repo.Repository.WikiPath() + } else { + gitRepo = ctx.Repo.GitRepo + repoPath = models.RepoPath(userName, repoName) + } - commit, err := ctx.Repo.GitRepo.GetCommit(commitID) + commit, err := gitRepo.GetCommit(commitID) if err != nil { if git.IsErrNotExist(err) { ctx.NotFound("Repo.GitRepo.GetCommit", err) @@ -233,7 +250,7 @@ func Diff(ctx *context.Context) { ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses) - diff, err := gitdiff.GetDiffCommit(models.RepoPath(userName, repoName), + diff, err := gitdiff.GetDiffCommit(repoPath, commitID, setting.Git.MaxGitDiffLines, setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles) if err != nil { @@ -258,7 +275,7 @@ func Diff(ctx *context.Context) { var parentCommit *git.Commit if commit.ParentCount() > 0 { - parentCommit, err = ctx.Repo.GitRepo.GetCommit(parents[0]) + parentCommit, err = gitRepo.GetCommit(parents[0]) if err != nil { ctx.NotFound("GetParentCommit", err) return @@ -298,8 +315,14 @@ func Diff(ctx *context.Context) { // RawDiff dumps diff results of repository in given commit ID to io.Writer func RawDiff(ctx *context.Context) { + var repoPath string + if ctx.Data["PageIsWiki"] != nil { + repoPath = ctx.Repo.Repository.WikiPath() + } else { + repoPath = models.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name) + } if err := git.GetRawDiff( - models.RepoPath(ctx.Repo.Owner.Name, ctx.Repo.Repository.Name), + repoPath, ctx.Params(":sha"), git.RawDiffType(ctx.Params(":ext")), ctx.Resp, diff --git a/routers/repo/wiki.go b/routers/repo/wiki.go index a01498fb0a..5da01f21ac 100644 --- a/routers/repo/wiki.go +++ b/routers/repo/wiki.go @@ -245,6 +245,8 @@ func renderRevisionPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) ctx.Data["Title"] = pageName ctx.Data["title"] = pageName ctx.Data["RequireHighlightJS"] = true + ctx.Data["Username"] = ctx.Repo.Owner.Name + ctx.Data["Reponame"] = ctx.Repo.Repository.Name //lookup filename in wiki - get filecontent, gitTree entry , real filename data, entry, pageFilename, noEntry := wikiContentsByName(ctx, commit, pageName) diff --git a/routers/routes/routes.go b/routers/routes/routes.go index a51c1e17af..7f409eb576 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -857,6 +857,8 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/?:page", repo.Wiki) m.Get("/_pages", repo.WikiPages) m.Get("/:page/_revision", repo.WikiRevision) + m.Get("/commit/:sha([a-f0-9]{7,40})$", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.Diff) + m.Get("/commit/:sha([a-f0-9]{7,40})\\.:ext(patch|diff)", repo.RawDiff) m.Group("", func() { m.Combo("/_new").Get(repo.NewWiki). @@ -865,7 +867,9 @@ func RegisterRoutes(m *macaron.Macaron) { Post(bindIgnErr(auth.NewWikiForm{}), repo.EditWikiPost) m.Post("/:page/delete", repo.DeleteWikiPagePost) }, context.RepoMustNotBeArchived(), reqSignIn, reqRepoWikiWriter) - }, repo.MustEnableWiki, context.RepoRef()) + }, repo.MustEnableWiki, context.RepoRef(), func(ctx *context.Context) { + ctx.Data["PageIsWiki"] = true + }) m.Group("/wiki", func() { m.Get("/raw/*", repo.WikiRaw) |