mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Display total commit count in hook message (#21400)
Fixes #21379 The commits are capped by `setting.UI.FeedMaxCommitNum` so `len(commits)` is not the correct number. So this PR adds a new `TotalCommits` field. Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -650,6 +650,7 @@ func (m *webhookNotifier) NotifyPushCommits(pusher *user_model.User, repo *repo_ | ||||
| 		After:        opts.NewCommitID, | ||||
| 		CompareURL:   setting.AppURL + commits.CompareURL, | ||||
| 		Commits:      apiCommits, | ||||
| 		TotalCommits: commits.Len, | ||||
| 		HeadCommit:   apiHeadCommit, | ||||
| 		Repo:         convert.ToRepo(repo, perm.AccessModeOwner), | ||||
| 		Pusher:       apiPusher, | ||||
| @@ -880,6 +881,7 @@ func (m *webhookNotifier) NotifySyncPushCommits(pusher *user_model.User, repo *r | ||||
| 		After:        opts.NewCommitID, | ||||
| 		CompareURL:   setting.AppURL + commits.CompareURL, | ||||
| 		Commits:      apiCommits, | ||||
| 		TotalCommits: commits.Len, | ||||
| 		HeadCommit:   apiHeadCommit, | ||||
| 		Repo:         convert.ToRepo(repo, perm.AccessModeOwner), | ||||
| 		Pusher:       apiPusher, | ||||
|   | ||||
| @@ -272,6 +272,7 @@ type PushPayload struct { | ||||
| 	After        string           `json:"after"` | ||||
| 	CompareURL   string           `json:"compare_url"` | ||||
| 	Commits      []*PayloadCommit `json:"commits"` | ||||
| 	TotalCommits int              `json:"total_commits"` | ||||
| 	HeadCommit   *PayloadCommit   `json:"head_commit"` | ||||
| 	Repo         *Repository      `json:"repository"` | ||||
| 	Pusher       *User            `json:"pusher"` | ||||
|   | ||||
| @@ -174,6 +174,7 @@ func TestHook(ctx *context.APIContext) { | ||||
| 		After:        commitID, | ||||
| 		CompareURL:   setting.AppURL + ctx.Repo.Repository.ComposeCompareURL(commitID, commitID), | ||||
| 		Commits:      []*api.PayloadCommit{commit}, | ||||
| 		TotalCommits: 1, | ||||
| 		HeadCommit:   commit, | ||||
| 		Repo:         convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone), | ||||
| 		Pusher:       convert.ToUserWithAccessMode(ctx.Doer, perm.AccessModeNone), | ||||
|   | ||||
| @@ -673,6 +673,7 @@ func TestWebhook(ctx *context.Context) { | ||||
| 		After:        commitID, | ||||
| 		CompareURL:   setting.AppURL + ctx.Repo.Repository.ComposeCompareURL(commitID, commitID), | ||||
| 		Commits:      []*api.PayloadCommit{apiCommit}, | ||||
| 		TotalCommits: 1, | ||||
| 		HeadCommit:   apiCommit, | ||||
| 		Repo:         convert.ToRepo(ctx.Repo.Repository, perm.AccessModeNone), | ||||
| 		Pusher:       apiUser, | ||||
|   | ||||
| @@ -67,14 +67,14 @@ func (d *DingtalkPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	) | ||||
|  | ||||
| 	var titleLink, linkText string | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 new commit" | ||||
| 		titleLink = p.Commits[0].URL | ||||
| 		linkText = fmt.Sprintf("view commit %s", p.Commits[0].ID[:7]) | ||||
| 		linkText = "view commit" | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) | ||||
| 		titleLink = p.CompareURL | ||||
| 		linkText = fmt.Sprintf("view commit %s...%s", p.Commits[0].ID[:7], p.Commits[len(p.Commits)-1].ID[:7]) | ||||
| 		linkText = "view commits" | ||||
| 	} | ||||
| 	if titleLink == "" { | ||||
| 		titleLink = p.Repo.HTMLURL + "/src/" + util.PathEscapeSegments(branchName) | ||||
|   | ||||
| @@ -82,7 +82,7 @@ func TestDingTalkPayload(t *testing.T) { | ||||
|  | ||||
| 		assert.Equal(t, "[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1\r\n[2020558](http://localhost:3000/test/repo/commit/2020558fe2e34debb818a514715839cabd25e778) commit message - user1", pl.(*DingtalkPayload).ActionCard.Text) | ||||
| 		assert.Equal(t, "[test/repo:test] 2 new commits", pl.(*DingtalkPayload).ActionCard.Title) | ||||
| 		assert.Equal(t, "view commit 2020558...2020558", pl.(*DingtalkPayload).ActionCard.SingleTitle) | ||||
| 		assert.Equal(t, "view commits", pl.(*DingtalkPayload).ActionCard.SingleTitle) | ||||
| 		assert.Equal(t, "http://localhost:3000/test/repo/src/test", parseRealSingleURL(pl.(*DingtalkPayload).ActionCard.SingleURL)) | ||||
| 	}) | ||||
|  | ||||
|   | ||||
| @@ -142,11 +142,11 @@ func (d *DiscordPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	) | ||||
|  | ||||
| 	var titleLink string | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 new commit" | ||||
| 		titleLink = p.Commits[0].URL | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) | ||||
| 		titleLink = p.CompareURL | ||||
| 	} | ||||
| 	if titleLink == "" { | ||||
|   | ||||
| @@ -88,6 +88,7 @@ func pushTestPayload() *api.PushPayload { | ||||
| 		CompareURL:   "", | ||||
| 		HeadCommit:   commit, | ||||
| 		Commits:      []*api.PayloadCommit{commit, commit}, | ||||
| 		TotalCommits: 2, | ||||
| 		Repo: &api.Repository{ | ||||
| 			HTMLURL:  "http://localhost:3000/test/repo", | ||||
| 			Name:     "repo", | ||||
|   | ||||
| @@ -161,10 +161,10 @@ func (m *MatrixPayloadUnsafe) Release(p *api.ReleasePayload) (api.Payloader, err | ||||
| func (m *MatrixPayloadUnsafe) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	var commitDesc string | ||||
|  | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 commit" | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d commits", p.TotalCommits) | ||||
| 	} | ||||
|  | ||||
| 	repoLink := MatrixLinkFormatter(p.Repo.HTMLURL, p.Repo.FullName) | ||||
|   | ||||
| @@ -125,11 +125,11 @@ func (m *MSTeamsPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	) | ||||
|  | ||||
| 	var titleLink string | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 new commit" | ||||
| 		titleLink = p.Commits[0].URL | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) | ||||
| 		titleLink = p.CompareURL | ||||
| 	} | ||||
| 	if titleLink == "" { | ||||
| @@ -156,7 +156,7 @@ func (m *MSTeamsPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 		text, | ||||
| 		titleLink, | ||||
| 		greenColor, | ||||
| 		&MSTeamsFact{"Commit count:", fmt.Sprintf("%d", len(p.Commits))}, | ||||
| 		&MSTeamsFact{"Commit count:", fmt.Sprintf("%d", p.TotalCommits)}, | ||||
| 	), nil | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -179,10 +179,10 @@ func (s *SlackPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 		commitString string | ||||
| 	) | ||||
|  | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 new commit" | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) | ||||
| 	} | ||||
| 	if len(p.CompareURL) > 0 { | ||||
| 		commitString = SlackLinkFormatter(p.CompareURL, commitDesc) | ||||
|   | ||||
| @@ -89,11 +89,11 @@ func (t *TelegramPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	) | ||||
|  | ||||
| 	var titleLink string | ||||
| 	if len(p.Commits) == 1 { | ||||
| 	if p.TotalCommits == 1 { | ||||
| 		commitDesc = "1 new commit" | ||||
| 		titleLink = p.Commits[0].URL | ||||
| 	} else { | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", len(p.Commits)) | ||||
| 		commitDesc = fmt.Sprintf("%d new commits", p.TotalCommits) | ||||
| 		titleLink = p.CompareURL | ||||
| 	} | ||||
| 	if titleLink == "" { | ||||
|   | ||||
| @@ -93,7 +93,7 @@ func (f *WechatworkPayload) Push(p *api.PushPayload) (api.Payloader, error) { | ||||
| 	for i, commit := range p.Commits { | ||||
| 		var authorName string | ||||
| 		if commit.Author != nil { | ||||
| 			authorName = "Author:" + commit.Author.Name | ||||
| 			authorName = "Author: " + commit.Author.Name | ||||
| 		} | ||||
|  | ||||
| 		message := strings.ReplaceAll(commit.Message, "\n\n", "\r\n") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 KN4CK3R
					KN4CK3R