summaryrefslogtreecommitdiffstats
path: root/modules/webhook
diff options
context:
space:
mode:
authorS7evinK <tfaelligen@gmail.com>2020-09-03 04:46:02 +0200
committerGitHub <noreply@github.com>2020-09-02 22:46:02 -0400
commit7af2ccd5115caf8889ba20b61881c44694c82cb1 (patch)
tree57a12a4250dbc168bc2b2ae267ee3a58cf6a54ae /modules/webhook
parent514201af5d2e81182c86306f414ced27c8602eb6 (diff)
downloadgitea-7af2ccd5115caf8889ba20b61881c44694c82cb1.tar.gz
gitea-7af2ccd5115caf8889ba20b61881c44694c82cb1.zip
Avoid sending "0 new commits" webhooks (#12212)
* Avoid sending "0 new commits" webhook Signed-off-by: Till Faelligen <tfaelligen@gmail.com> * Revert "Avoid sending "0 new commits" webhook" This reverts commit 1f47ccfacd81470e2c33a02bb8d255172aa4ec08. * Move commit count check to more central place * Make tests pass * Update modules/webhook/webhook.go Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'modules/webhook')
-rw-r--r--modules/webhook/webhook.go8
-rw-r--r--modules/webhook/webhook_test.go4
2 files changed, 10 insertions, 2 deletions
diff --git a/modules/webhook/webhook.go b/modules/webhook/webhook.go
index 9748721450..2ef150210e 100644
--- a/modules/webhook/webhook.go
+++ b/modules/webhook/webhook.go
@@ -76,6 +76,14 @@ func prepareWebhook(w *models.Webhook, repo *models.Repository, event models.Hoo
}
}
+ // Avoid sending "0 new commits" to non-integration relevant webhooks (e.g. slack, discord, etc.).
+ // Integration webhooks (e.g. drone) still receive the required data.
+ if pushEvent, ok := p.(*api.PushPayload); ok &&
+ w.HookTaskType != models.GITEA && w.HookTaskType != models.GOGS &&
+ len(pushEvent.Commits) == 0 {
+ return nil
+ }
+
// If payload has no associated branch (e.g. it's a new tag, issue, etc.),
// branch filter has no effect.
if branch := getPayloadBranch(p); branch != "" {
diff --git a/modules/webhook/webhook_test.go b/modules/webhook/webhook_test.go
index e88e67e9bf..10c32a9485 100644
--- a/modules/webhook/webhook_test.go
+++ b/modules/webhook/webhook_test.go
@@ -34,7 +34,7 @@ func TestPrepareWebhooks(t *testing.T) {
for _, hookTask := range hookTasks {
models.AssertNotExistsBean(t, hookTask)
}
- assert.NoError(t, PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{}))
+ assert.NoError(t, PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{Commits: []*api.PayloadCommit{{}}}))
for _, hookTask := range hookTasks {
models.AssertExistsAndLoadBean(t, hookTask)
}
@@ -51,7 +51,7 @@ func TestPrepareWebhooksBranchFilterMatch(t *testing.T) {
models.AssertNotExistsBean(t, hookTask)
}
// this test also ensures that * doesn't handle / in any special way (like shell would)
- assert.NoError(t, PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{Ref: "refs/heads/feature/7791"}))
+ assert.NoError(t, PrepareWebhooks(repo, models.HookEventPush, &api.PushPayload{Ref: "refs/heads/feature/7791", Commits: []*api.PayloadCommit{{}}}))
for _, hookTask := range hookTasks {
models.AssertExistsAndLoadBean(t, hookTask)
}