]> source.dussan.org Git - gitea.git/commitdiff
Whitespace in commits (#14650)
authorvnkmpf <tz@zztt.eu>
Sat, 13 Feb 2021 04:35:43 +0000 (05:35 +0100)
committerGitHub <noreply@github.com>
Sat, 13 Feb 2021 04:35:43 +0000 (05:35 +0100)
* Add whitespace to commit view

* Add whitespace to /compare/a...b

* Move repeated whitespaceFlags to gitdiff

* Add whitespace for wiki pages

routers/repo/commit.go
routers/repo/compare.go
routers/repo/pull.go
routers/routes/web.go
services/gitdiff/gitdiff.go
templates/repo/diff/box.tmpl

index c411d247e2e59e2b3b65ceac38fd7ddd69fdd8a0..c3ee6b5acc0dd263ef30935c58231fc38417ed7f 100644 (file)
@@ -304,11 +304,12 @@ func Diff(ctx *context.Context) {
        ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses)
        ctx.Data["CommitStatuses"] = statuses
 
-       diff, err := gitdiff.GetDiffCommit(repoPath,
+       diff, err := gitdiff.GetDiffCommitWithWhitespaceBehavior(repoPath,
                commitID, setting.Git.MaxGitDiffLines,
-               setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles)
+               setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles,
+               gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
        if err != nil {
-               ctx.NotFound("GetDiffCommit", err)
+               ctx.NotFound("GetDiffCommitWithWhitespaceBehavior", err)
                return
        }
 
index 218f712469530e2f548cd7acdbd6c61739b0934e..4869e5919a94b3bac0b1dd4b7c05e9e60d7e4c56 100644 (file)
@@ -411,7 +411,8 @@ func PrepareCompareDiff(
        headRepo *models.Repository,
        headGitRepo *git.Repository,
        compareInfo *git.CompareInfo,
-       baseBranch, headBranch string) bool {
+       baseBranch, headBranch string,
+       whitespaceBehavior string) bool {
 
        var (
                repo  = ctx.Repo.Repository
@@ -442,11 +443,11 @@ func PrepareCompareDiff(
                return true
        }
 
-       diff, err := gitdiff.GetDiffRange(models.RepoPath(headUser.Name, headRepo.Name),
+       diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(models.RepoPath(headUser.Name, headRepo.Name),
                compareInfo.MergeBase, headCommitID, setting.Git.MaxGitDiffLines,
-               setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles)
+               setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, whitespaceBehavior)
        if err != nil {
-               ctx.ServerError("GetDiffRange", err)
+               ctx.ServerError("GetDiffRangeWithWhitespaceBehavior", err)
                return false
        }
        ctx.Data["Diff"] = diff
@@ -530,12 +531,14 @@ func getBranchesForRepo(user *models.User, repo *models.Repository) (bool, []str
 // CompareDiff show different from one commit to another commit
 func CompareDiff(ctx *context.Context) {
        headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx)
+
        if ctx.Written() {
                return
        }
        defer headGitRepo.Close()
 
-       nothingToCompare := PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch)
+       nothingToCompare := PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch,
+               gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
        if ctx.Written() {
                return
        }
index 69860021025b95b5096d9810af975ad975eef9c1..d3dd9e4fb5442f980b9d7c2d9684a6b11392fe7f 100644 (file)
@@ -581,12 +581,6 @@ func ViewPullFiles(ctx *context.Context) {
        }
        pull := issue.PullRequest
 
-       whitespaceFlags := map[string]string{
-               "ignore-all":    "-w",
-               "ignore-change": "-b",
-               "ignore-eol":    "--ignore-space-at-eol",
-               "":              ""}
-
        var (
                diffRepoPath  string
                startCommitID string
@@ -629,7 +623,7 @@ func ViewPullFiles(ctx *context.Context) {
        diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(diffRepoPath,
                startCommitID, endCommitID, setting.Git.MaxGitDiffLines,
                setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles,
-               whitespaceFlags[ctx.Data["WhitespaceBehavior"].(string)])
+               gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
        if err != nil {
                ctx.ServerError("GetDiffRangeWithWhitespaceBehavior", err)
                return
@@ -993,7 +987,8 @@ func CompareAndPullRequestPost(ctx *context.Context) {
 
                // This stage is already stop creating new pull request, so it does not matter if it has
                // something to compare or not.
-               PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch)
+               PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch,
+                       gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
                if ctx.Written() {
                        return
                }
@@ -1003,7 +998,8 @@ func CompareAndPullRequestPost(ctx *context.Context) {
        }
 
        if util.IsEmptyString(form.Title) {
-               PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch)
+               PrepareCompareDiff(ctx, headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch,
+                       gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
                if ctx.Written() {
                        return
                }
index 389e050376e907ae4414702b63dd024346714c56..a6af64f8748ee8af1dbed3bac239f2ef3554453b 100644 (file)
@@ -695,8 +695,8 @@ func RegisterRoutes(m *web.Route) {
                        m.Get("/{id}", repo.MilestoneIssuesAndPulls)
                }, reqRepoIssuesOrPullsReader, context.RepoRef())
                m.Combo("/compare/*", repo.MustBeNotEmpty, reqRepoCodeReader, repo.SetEditorconfigIfExists).
-                       Get(ignSignIn, repo.SetDiffViewStyle, repo.CompareDiff).
-                       Post(reqSignIn, context.RepoMustNotBeArchived(), reqRepoPullsReader, repo.MustAllowPulls, bindIgnErr(auth.CreateIssueForm{}), repo.CompareAndPullRequestPost)
+                       Get(ignSignIn, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.CompareDiff).
+                       Post(reqSignIn, context.RepoMustNotBeArchived(), reqRepoPullsReader, repo.MustAllowPulls, bindIgnErr(auth.CreateIssueForm{}), repo.SetWhitespaceBehavior, repo.CompareAndPullRequestPost)
        }, context.RepoAssignment(), context.UnitTypes())
 
        // Grouping for those endpoints that do require authentication
@@ -885,7 +885,7 @@ func RegisterRoutes(m *web.Route) {
                        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}}", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.Diff)
                        m.Get("/commit/{sha:[a-f0-9]{7,40}}.{:patch|diff}", repo.RawDiff)
 
                        m.Group("", func() {
@@ -977,7 +977,7 @@ func RegisterRoutes(m *web.Route) {
 
                m.Group("", func() {
                        m.Get("/graph", repo.Graph)
-                       m.Get("/commit/{sha:([a-f0-9]{7,40})$}", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.Diff)
+                       m.Get("/commit/{sha:([a-f0-9]{7,40})$}", repo.SetEditorconfigIfExists, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.Diff)
                }, repo.MustBeNotEmpty, context.RepoRef(), reqRepoCodeReader)
 
                m.Group("/src", func() {
index 81b92f71686ddd1bbca7ea861a219311bd106b19..d706dc99c9479ab4ad658be3cc657632ff3c8407 100644 (file)
@@ -967,7 +967,13 @@ func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID
 
 // GetDiffCommit builds a Diff representing the given commitID.
 func GetDiffCommit(repoPath, commitID string, maxLines, maxLineCharacters, maxFiles int) (*Diff, error) {
-       return GetDiffRange(repoPath, "", commitID, maxLines, maxLineCharacters, maxFiles)
+       return GetDiffRangeWithWhitespaceBehavior(repoPath, "", commitID, maxLines, maxLineCharacters, maxFiles, "")
+}
+
+// GetDiffCommitWithWhitespaceBehavior builds a Diff representing the given commitID.
+// The whitespaceBehavior is either an empty string or a git flag
+func GetDiffCommitWithWhitespaceBehavior(repoPath, commitID string, maxLines, maxLineCharacters, maxFiles int, whitespaceBehavior string) (*Diff, error) {
+       return GetDiffRangeWithWhitespaceBehavior(repoPath, "", commitID, maxLines, maxLineCharacters, maxFiles, whitespaceBehavior)
 }
 
 // CommentAsDiff returns c.Patch as *Diff
@@ -995,3 +1001,14 @@ func CommentMustAsDiff(c *models.Comment) *Diff {
        }
        return diff
 }
+
+// GetWhitespaceFlag returns git diff flag for treating whitespaces
+func GetWhitespaceFlag(whiteSpaceBehavior string) string {
+       whitespaceFlags := map[string]string{
+               "ignore-all":    "-w",
+               "ignore-change": "-b",
+               "ignore-eol":    "--ignore-space-at-eol",
+               "":              ""}
+
+       return whitespaceFlags[whiteSpaceBehavior]
+}
index 5110129b8d0e24d4a343dfa899c0637bf872bec5..f93dac9b4d48b6c8327d09b34e4ab12419f0cbca 100644 (file)
@@ -2,11 +2,7 @@
        <div class="diff-detail-box diff-box sticky">
                <div>
                        <div class="ui right">
-                               {{if .PageIsPullFiles}}
-                                       {{template "repo/diff/whitespace_dropdown" .}}
-                               {{else}}
-                                       <a class="ui tiny basic toggle button" href="?style={{if .IsSplitStyle}}unified{{else}}split{{end}}">{{ if .IsSplitStyle }}{{.i18n.Tr "repo.diff.show_unified_view"}}{{else}}{{.i18n.Tr "repo.diff.show_split_view"}}{{end}}</a>
-                               {{end}}
+                               {{template "repo/diff/whitespace_dropdown" .}}
                                {{template "repo/diff/options_dropdown" .}}
                                {{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
                                        {{template "repo/diff/new_review" .}}
                                {{svg "octicon-diff" 16 "mr-2"}}{{.i18n.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
                        </div>
                        <div class="diff-detail-actions df ac">
-                               {{if .PageIsPullFiles}}
-                                       {{template "repo/diff/whitespace_dropdown" .}}
-                               {{else}}
-                                       <a class="ui tiny basic toggle button" href="?style={{if .IsSplitStyle}}unified{{else}}split{{end}}">{{ if .IsSplitStyle }}{{.i18n.Tr "repo.diff.show_unified_view"}}{{else}}{{.i18n.Tr "repo.diff.show_split_view"}}{{end}}</a>
-                               {{end}}
+                               {{template "repo/diff/whitespace_dropdown" .}}
                                {{template "repo/diff/options_dropdown" .}}
                                {{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
                                        {{template "repo/diff/new_review" .}}