mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Commit messages now rendered with line breaks and prefix spacing.
This commit is contained in:
		@@ -96,9 +96,42 @@ func ToUtf8(content string) string {
 | 
				
			|||||||
	return res
 | 
						return res
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Replaces all prefixes 'old' in 's' with 'new'.
 | 
				
			||||||
 | 
					func ReplaceLeft(s, old, new string) string {
 | 
				
			||||||
 | 
						old_len, new_len, i, n := len(old), len(new), 0, 0
 | 
				
			||||||
 | 
						for ; i < len(s) && strings.HasPrefix(s[i:], old); n += 1 {
 | 
				
			||||||
 | 
							i += old_len
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// simple optimization
 | 
				
			||||||
 | 
						if n == 0 {
 | 
				
			||||||
 | 
							return s
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// allocating space for the new string
 | 
				
			||||||
 | 
						newLen := n*new_len + len(s[i:])
 | 
				
			||||||
 | 
						replacement := make([]byte, newLen, newLen)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						j := 0
 | 
				
			||||||
 | 
						for ; j < n*new_len; j += new_len {
 | 
				
			||||||
 | 
							copy(replacement[j:j+new_len], new)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						copy(replacement[j:], s[i:])
 | 
				
			||||||
 | 
						return string(replacement)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RenderCommitMessage renders commit message with XSS-safe and special links.
 | 
					// RenderCommitMessage renders commit message with XSS-safe and special links.
 | 
				
			||||||
func RenderCommitMessage(msg, urlPrefix string) template.HTML {
 | 
					func RenderCommitMessage(msg, urlPrefix string) template.HTML {
 | 
				
			||||||
	return template.HTML(string(RenderIssueIndexPattern([]byte(template.HTMLEscapeString(msg)), urlPrefix)))
 | 
						cleanMsg := template.HTMLEscapeString(msg)
 | 
				
			||||||
 | 
						fullMessage := string(RenderIssueIndexPattern([]byte(cleanMsg), urlPrefix))
 | 
				
			||||||
 | 
						msgLines := strings.Split(strings.TrimSpace(fullMessage), "\n")
 | 
				
			||||||
 | 
						for i := range msgLines {
 | 
				
			||||||
 | 
							msgLines[i] = ReplaceLeft(msgLines[i], " ", " ")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fullMessage = strings.Join(msgLines, "<br>")
 | 
				
			||||||
 | 
						return template.HTML(fullMessage)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var TemplateFuncs template.FuncMap = map[string]interface{}{
 | 
					var TemplateFuncs template.FuncMap = map[string]interface{}{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,12 +6,12 @@
 | 
				
			|||||||
    {{template "repo/commits_table" .}}
 | 
					    {{template "repo/commits_table" .}}
 | 
				
			||||||
    {{else}}
 | 
					    {{else}}
 | 
				
			||||||
    <h4 class="ui top attached info header">
 | 
					    <h4 class="ui top attached info header">
 | 
				
			||||||
      {{RenderCommitMessage .Commit.Message $.RepoLink}}
 | 
					 | 
				
			||||||
      <div class="ui right">
 | 
					      <div class="ui right">
 | 
				
			||||||
        <a class="ui blue tiny button" href="{{EscapePound .SourcePath}}">
 | 
					        <a class="ui blue tiny button" href="{{EscapePound .SourcePath}}">
 | 
				
			||||||
          {{.i18n.Tr "repo.diff.browse_source"}}
 | 
					          {{.i18n.Tr "repo.diff.browse_source"}}
 | 
				
			||||||
        </a>
 | 
					        </a>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					      {{RenderCommitMessage .Commit.Message $.RepoLink}}
 | 
				
			||||||
    </h4>
 | 
					    </h4>
 | 
				
			||||||
    <div class="ui attached info segment">
 | 
					    <div class="ui attached info segment">
 | 
				
			||||||
      {{if .Author}}
 | 
					      {{if .Author}}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user