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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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.
 | 
			
		||||
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{}{
 | 
			
		||||
 
 | 
			
		||||
@@ -6,12 +6,12 @@
 | 
			
		||||
    {{template "repo/commits_table" .}}
 | 
			
		||||
    {{else}}
 | 
			
		||||
    <h4 class="ui top attached info header">
 | 
			
		||||
      {{RenderCommitMessage .Commit.Message $.RepoLink}}
 | 
			
		||||
      <div class="ui right">
 | 
			
		||||
        <a class="ui blue tiny button" href="{{EscapePound .SourcePath}}">
 | 
			
		||||
          {{.i18n.Tr "repo.diff.browse_source"}}
 | 
			
		||||
        </a>
 | 
			
		||||
      </div>
 | 
			
		||||
      {{RenderCommitMessage .Commit.Message $.RepoLink}}
 | 
			
		||||
    </h4>
 | 
			
		||||
    <div class="ui attached info segment">
 | 
			
		||||
      {{if .Author}}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user