mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-20 20:07:03 +01:00
Whitespace in commits (#14650)
* Add whitespace to commit view * Add whitespace to /compare/a...b * Move repeated whitespaceFlags to gitdiff * Add whitespace for wiki pages
This commit is contained in:
parent
a3cc842e15
commit
487f2ee41c
6 changed files with 41 additions and 32 deletions
|
@ -304,11 +304,12 @@ func Diff(ctx *context.Context) {
|
||||||
ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses)
|
ctx.Data["CommitStatus"] = models.CalcCommitStatus(statuses)
|
||||||
ctx.Data["CommitStatuses"] = statuses
|
ctx.Data["CommitStatuses"] = statuses
|
||||||
|
|
||||||
diff, err := gitdiff.GetDiffCommit(repoPath,
|
diff, err := gitdiff.GetDiffCommitWithWhitespaceBehavior(repoPath,
|
||||||
commitID, setting.Git.MaxGitDiffLines,
|
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 {
|
if err != nil {
|
||||||
ctx.NotFound("GetDiffCommit", err)
|
ctx.NotFound("GetDiffCommitWithWhitespaceBehavior", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -411,7 +411,8 @@ func PrepareCompareDiff(
|
||||||
headRepo *models.Repository,
|
headRepo *models.Repository,
|
||||||
headGitRepo *git.Repository,
|
headGitRepo *git.Repository,
|
||||||
compareInfo *git.CompareInfo,
|
compareInfo *git.CompareInfo,
|
||||||
baseBranch, headBranch string) bool {
|
baseBranch, headBranch string,
|
||||||
|
whitespaceBehavior string) bool {
|
||||||
|
|
||||||
var (
|
var (
|
||||||
repo = ctx.Repo.Repository
|
repo = ctx.Repo.Repository
|
||||||
|
@ -442,11 +443,11 @@ func PrepareCompareDiff(
|
||||||
return true
|
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,
|
compareInfo.MergeBase, headCommitID, setting.Git.MaxGitDiffLines,
|
||||||
setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles)
|
setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles, whitespaceBehavior)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetDiffRange", err)
|
ctx.ServerError("GetDiffRangeWithWhitespaceBehavior", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
ctx.Data["Diff"] = diff
|
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
|
// CompareDiff show different from one commit to another commit
|
||||||
func CompareDiff(ctx *context.Context) {
|
func CompareDiff(ctx *context.Context) {
|
||||||
headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx)
|
headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx)
|
||||||
|
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer headGitRepo.Close()
|
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() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -581,12 +581,6 @@ func ViewPullFiles(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
pull := issue.PullRequest
|
pull := issue.PullRequest
|
||||||
|
|
||||||
whitespaceFlags := map[string]string{
|
|
||||||
"ignore-all": "-w",
|
|
||||||
"ignore-change": "-b",
|
|
||||||
"ignore-eol": "--ignore-space-at-eol",
|
|
||||||
"": ""}
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
diffRepoPath string
|
diffRepoPath string
|
||||||
startCommitID string
|
startCommitID string
|
||||||
|
@ -629,7 +623,7 @@ func ViewPullFiles(ctx *context.Context) {
|
||||||
diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(diffRepoPath,
|
diff, err := gitdiff.GetDiffRangeWithWhitespaceBehavior(diffRepoPath,
|
||||||
startCommitID, endCommitID, setting.Git.MaxGitDiffLines,
|
startCommitID, endCommitID, setting.Git.MaxGitDiffLines,
|
||||||
setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles,
|
setting.Git.MaxGitDiffLineCharacters, setting.Git.MaxGitDiffFiles,
|
||||||
whitespaceFlags[ctx.Data["WhitespaceBehavior"].(string)])
|
gitdiff.GetWhitespaceFlag(ctx.Data["WhitespaceBehavior"].(string)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetDiffRangeWithWhitespaceBehavior", err)
|
ctx.ServerError("GetDiffRangeWithWhitespaceBehavior", err)
|
||||||
return
|
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
|
// This stage is already stop creating new pull request, so it does not matter if it has
|
||||||
// something to compare or not.
|
// 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() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1003,7 +998,8 @@ func CompareAndPullRequestPost(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if util.IsEmptyString(form.Title) {
|
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() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -695,8 +695,8 @@ func RegisterRoutes(m *web.Route) {
|
||||||
m.Get("/{id}", repo.MilestoneIssuesAndPulls)
|
m.Get("/{id}", repo.MilestoneIssuesAndPulls)
|
||||||
}, reqRepoIssuesOrPullsReader, context.RepoRef())
|
}, reqRepoIssuesOrPullsReader, context.RepoRef())
|
||||||
m.Combo("/compare/*", repo.MustBeNotEmpty, reqRepoCodeReader, repo.SetEditorconfigIfExists).
|
m.Combo("/compare/*", repo.MustBeNotEmpty, reqRepoCodeReader, repo.SetEditorconfigIfExists).
|
||||||
Get(ignSignIn, repo.SetDiffViewStyle, repo.CompareDiff).
|
Get(ignSignIn, repo.SetDiffViewStyle, repo.SetWhitespaceBehavior, repo.CompareDiff).
|
||||||
Post(reqSignIn, context.RepoMustNotBeArchived(), reqRepoPullsReader, repo.MustAllowPulls, bindIgnErr(auth.CreateIssueForm{}), repo.CompareAndPullRequestPost)
|
Post(reqSignIn, context.RepoMustNotBeArchived(), reqRepoPullsReader, repo.MustAllowPulls, bindIgnErr(auth.CreateIssueForm{}), repo.SetWhitespaceBehavior, repo.CompareAndPullRequestPost)
|
||||||
}, context.RepoAssignment(), context.UnitTypes())
|
}, context.RepoAssignment(), context.UnitTypes())
|
||||||
|
|
||||||
// Grouping for those endpoints that do require authentication
|
// Grouping for those endpoints that do require authentication
|
||||||
|
@ -885,7 +885,7 @@ func RegisterRoutes(m *web.Route) {
|
||||||
m.Get("/{page}", repo.Wiki)
|
m.Get("/{page}", repo.Wiki)
|
||||||
m.Get("/_pages", repo.WikiPages)
|
m.Get("/_pages", repo.WikiPages)
|
||||||
m.Get("/{page}/_revision", repo.WikiRevision)
|
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.Get("/commit/{sha:[a-f0-9]{7,40}}.{:patch|diff}", repo.RawDiff)
|
||||||
|
|
||||||
m.Group("", func() {
|
m.Group("", func() {
|
||||||
|
@ -977,7 +977,7 @@ func RegisterRoutes(m *web.Route) {
|
||||||
|
|
||||||
m.Group("", func() {
|
m.Group("", func() {
|
||||||
m.Get("/graph", repo.Graph)
|
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)
|
}, repo.MustBeNotEmpty, context.RepoRef(), reqRepoCodeReader)
|
||||||
|
|
||||||
m.Group("/src", func() {
|
m.Group("/src", func() {
|
||||||
|
|
|
@ -967,7 +967,13 @@ func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID
|
||||||
|
|
||||||
// GetDiffCommit builds a Diff representing the given commitID.
|
// GetDiffCommit builds a Diff representing the given commitID.
|
||||||
func GetDiffCommit(repoPath, commitID string, maxLines, maxLineCharacters, maxFiles int) (*Diff, error) {
|
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
|
// CommentAsDiff returns c.Patch as *Diff
|
||||||
|
@ -995,3 +1001,14 @@ func CommentMustAsDiff(c *models.Comment) *Diff {
|
||||||
}
|
}
|
||||||
return 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]
|
||||||
|
}
|
||||||
|
|
|
@ -2,11 +2,7 @@
|
||||||
<div class="diff-detail-box diff-box sticky">
|
<div class="diff-detail-box diff-box sticky">
|
||||||
<div>
|
<div>
|
||||||
<div class="ui right">
|
<div class="ui right">
|
||||||
{{if .PageIsPullFiles}}
|
{{template "repo/diff/whitespace_dropdown" .}}
|
||||||
{{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/options_dropdown" .}}
|
{{template "repo/diff/options_dropdown" .}}
|
||||||
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
|
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
|
||||||
{{template "repo/diff/new_review" .}}
|
{{template "repo/diff/new_review" .}}
|
||||||
|
@ -22,11 +18,7 @@
|
||||||
{{svg "octicon-diff" 16 "mr-2"}}{{.i18n.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
|
{{svg "octicon-diff" 16 "mr-2"}}{{.i18n.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
|
||||||
</div>
|
</div>
|
||||||
<div class="diff-detail-actions df ac">
|
<div class="diff-detail-actions df ac">
|
||||||
{{if .PageIsPullFiles}}
|
{{template "repo/diff/whitespace_dropdown" .}}
|
||||||
{{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/options_dropdown" .}}
|
{{template "repo/diff/options_dropdown" .}}
|
||||||
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
|
{{if and .PageIsPullFiles $.SignedUserID (not .IsArchived)}}
|
||||||
{{template "repo/diff/new_review" .}}
|
{{template "repo/diff/new_review" .}}
|
||||||
|
|
Loading…
Reference in a new issue