-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
…#16863) Backport #16775 Gitea has relied on some slow JS code to match up added and deleted lines on the diff pages. This can cause a considerable slow down on large diff pages. This PR makes a small change meaning that the matching up can occur much more simply. Partial fix #1351 Signed-off-by: Andrew Thornton <art27@cantab.net>
- Loading branch information
Showing
4 changed files
with
109 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +1,97 @@ | ||
{{$file := .file}} | ||
{{range $j, $section := $file.Sections}} | ||
{{range $k, $line := $section.Lines}} | ||
<tr class="{{DiffLineTypeToStr .GetType}}-code nl-{{$k}} ol-{{$k}}" data-line-type="{{DiffLineTypeToStr .GetType}}"> | ||
{{if eq .GetType 4}} | ||
<td class="lines-num lines-num-old"> | ||
{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 5) }} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=down" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold-down"}} | ||
</a> | ||
{{end}} | ||
{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 4) }} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=up" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold-up"}} | ||
</a> | ||
{{end}} | ||
{{if eq $line.GetExpandDirection 2}} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold"}} | ||
</a> | ||
{{end}} | ||
</td> | ||
<td colspan="5" class="lines-code lines-code-old "><code class="code-inner">{{$section.GetComputedInlineDiffFor $line}}</span></td> | ||
{{else}} | ||
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}"><span rel="{{if $line.LeftIdx}}diff-{{Sha1 $file.Name}}L{{$line.LeftIdx}}{{end}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-old">{{if $line.LeftIdx}}<span class="mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span>{{end}}</td> | ||
<td class="lines-code lines-code-old halfwidth">{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 2))}}<a class="ui primary button add-code-comment add-code-comment-left{{if (not $line.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="left" data-idx="{{$line.LeftIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $line.LeftIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}</code></td> | ||
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{Sha1 $file.Name}}R{{$line.RightIdx}}{{end}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-new">{{if $line.RightIdx}}<span class="mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span>{{end}}</td> | ||
<td class="lines-code lines-code-new halfwidth">{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 3))}}<a class="ui primary button add-code-comment add-code-comment-right{{if (not $line.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="right" data-idx="{{$line.RightIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $line.RightIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}</code></td> | ||
{{end}} | ||
</tr> | ||
{{if gt (len $line.Comments) 0}} | ||
<tr class="add-comment" data-line-type="{{DiffLineTypeToStr .GetType}}"> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-left"> | ||
{{if eq $line.GetCommentSide "previous"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
</td> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-right"> | ||
{{if eq $line.GetCommentSide "proposed"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
</td> | ||
{{$hasmatch := ne $line.Match -1}} | ||
{{if or (ne .GetType 2) (not $hasmatch)}} | ||
<tr class="{{DiffLineTypeToStr .GetType}}-code nl-{{$k}} ol-{{$k}}" data-line-type="{{DiffLineTypeToStr .GetType}}"> | ||
{{if eq .GetType 4}} | ||
<td class="lines-num lines-num-old"> | ||
{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 5) }} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=down" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold-down"}} | ||
</a> | ||
{{end}} | ||
{{if or (eq $line.GetExpandDirection 3) (eq $line.GetExpandDirection 4) }} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=up" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold-up"}} | ||
</a> | ||
{{end}} | ||
{{if eq $line.GetExpandDirection 2}} | ||
<a role="button" class="blob-excerpt" data-url="{{$.root.RepoLink}}/blob_excerpt/{{$.root.AfterCommitID}}" data-query="{{$line.GetBlobExcerptQuery}}&style=split&direction=" data-anchor="diff-{{Sha1 $file.Name}}K{{$line.SectionInfo.RightIdx}}"> | ||
{{svg "octicon-fold"}} | ||
</a> | ||
{{end}} | ||
</td> | ||
<td colspan="5" class="lines-code lines-code-old "><code class="code-inner">{{$section.GetComputedInlineDiffFor $line}}</span></td> | ||
{{else if and (eq .GetType 3) $hasmatch}}{{/* DEL */}} | ||
{{$match := index $section.Lines $line.Match}} | ||
<td class="lines-num lines-num-old del-code" data-line-num="{{$line.LeftIdx}}"><span rel="diff-{{Sha1 $file.Name}}L{{$line.LeftIdx}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-old del-code"><span class="mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span></td> | ||
<td class="lines-code lines-code-old halfwidth del-code">{{if and $.root.SignedUserID $.root.PageIsPullFiles}}<a class="ui primary button add-code-comment add-code-comment-left{{if (not $line.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="left" data-idx="{{$line.LeftIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $line.LeftIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}</code></td> | ||
<td class="lines-num lines-num-new add-code" data-line-num="{{if $match.RightIdx}}{{$match.RightIdx}}{{end}}"><span rel="{{if $match.RightIdx}}diff-{{Sha1 $file.Name}}R{{$match.RightIdx}}{{end}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-new add-code">{{if $match.RightIdx}}<span class="mono" data-type-marker="{{$match.GetLineTypeMarker}}"></span>{{end}}</td> | ||
<td class="lines-code lines-code-new halfwidth add-code">{{if and $.root.SignedUserID $.root.PageIsPullFiles}}<a class="ui primary button add-code-comment add-code-comment-right{{if (not $match.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="right" data-idx="{{$match.RightIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $match.RightIdx}}{{$section.GetComputedInlineDiffFor $match}}{{end}}</code></td> | ||
{{else}} | ||
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}"><span rel="{{if $line.LeftIdx}}diff-{{Sha1 $file.Name}}L{{$line.LeftIdx}}{{end}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-old">{{if $line.LeftIdx}}<span class="mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span>{{end}}</td> | ||
<td class="lines-code lines-code-old halfwidth">{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 2))}}<a class="ui primary button add-code-comment add-code-comment-left{{if (not $line.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="left" data-idx="{{$line.LeftIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $line.LeftIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}</code></td> | ||
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{Sha1 $file.Name}}R{{$line.RightIdx}}{{end}}"></span></td> | ||
<td class="lines-type-marker lines-type-marker-new">{{if $line.RightIdx}}<span class="mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span>{{end}}</td> | ||
<td class="lines-code lines-code-new halfwidth">{{if and $.root.SignedUserID $.root.PageIsPullFiles (not (eq .GetType 3))}}<a class="ui primary button add-code-comment add-code-comment-right{{if (not $line.CanComment)}} invisible{{end}}" data-path="{{$file.Name}}" data-side="right" data-idx="{{$line.RightIdx}}" data-new-comment-url="{{$.root.Issue.HTMLURL}}/files/reviews/new_comment">{{svg "octicon-plus"}}</a>{{end}}<code class="code-inner">{{if $line.RightIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}</code></td> | ||
{{end}} | ||
</tr> | ||
{{if and (eq .GetType 3) $hasmatch}} | ||
{{$match := index $section.Lines $line.Match}} | ||
{{if or (gt (len $line.Comments) 0) (gt (len $match.Comments) 0)}} | ||
<tr class="add-comment" data-line-type="{{DiffLineTypeToStr .GetType}}"> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-left"> | ||
{{if gt (len $line.Comments) 0}} | ||
{{if eq $line.GetCommentSide "previous"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
{{end}} | ||
{{if gt (len $match.Comments) 0}} | ||
{{if eq $match.GetCommentSide "previous"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $match.Comments}} | ||
{{end}} | ||
{{end}} | ||
</td> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-right"> | ||
{{if eq $line.GetCommentSide "proposed"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
{{if gt (len $match.Comments) 0}} | ||
{{if eq $match.GetCommentSide "proposed"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $match.Comments}} | ||
{{end}} | ||
{{end}} | ||
</td> | ||
</tr> | ||
{{end}} | ||
{{else if gt (len $line.Comments) 0}} | ||
<tr class="add-comment" data-line-type="{{DiffLineTypeToStr .GetType}}"> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-left"> | ||
{{if gt (len $line.Comments) 0}} | ||
{{if eq $line.GetCommentSide "previous"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
{{end}} | ||
</td> | ||
<td class="lines-num"></td> | ||
<td class="lines-type-marker"></td> | ||
<td class="add-comment-right"> | ||
{{if eq $line.GetCommentSide "proposed"}} | ||
{{template "repo/diff/conversation" mergeinto $.root "comments" $line.Comments}} | ||
{{end}} | ||
</td> | ||
</tr> | ||
{{end}} | ||
{{end}} | ||
{{end}} | ||
{{end}} |