summaryrefslogtreecommitdiffstats
path: root/routers/repo/commit.go
diff options
context:
space:
mode:
authormrsdizzie <info@mrsdizzie.com>2020-05-16 12:38:40 -0400
committerGitHub <noreply@github.com>2020-05-16 19:38:40 +0300
commitb2b86ea8701cab901cd9e6a02c918aa5c61748d6 (patch)
tree14b590e7681a107ba6f5cf2cabcea8a4a4b4aaa4 /routers/repo/commit.go
parent6603045476e42d24606c82d5a6d740f8c06aa059 (diff)
downloadgitea-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/repo/commit.go')
-rw-r--r--routers/repo/commit.go31
1 files changed, 27 insertions, 4 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,