未验证 提交 d97366df 编写于 作者: M M-Cosmosss 提交者: GitHub

fix: gitlab trigger error when push a new branch (#2910)

Signed-off-by: NM-Cosmosss <yuzhou@koderover.com>
上级 dc4b8436
...@@ -232,15 +232,25 @@ func (gpem *gitlabPushEventMatcher) Match(hookRepo *commonmodels.MainHookRepo) ( ...@@ -232,15 +232,25 @@ func (gpem *gitlabPushEventMatcher) Match(hookRepo *commonmodels.MainHookRepo) (
return false, err return false, err
} }
// compare接口获取两个commit之间的最终的改动 // When push a new branch, ev.Before will be a lot of "0"
diffs, err := client.Compare(ev.ProjectID, ev.Before, ev.After) // So we should not use Compare
if err != nil { if strings.Count(ev.Before, "0") == len(ev.Before) {
gpem.log.Errorf("Failed to get push event diffs, error: %s", err) for _, commit := range ev.Commits {
return false, err changedFiles = append(changedFiles, commit.Added...)
} changedFiles = append(changedFiles, commit.Removed...)
for _, diff := range diffs { changedFiles = append(changedFiles, commit.Modified...)
changedFiles = append(changedFiles, diff.NewPath) }
changedFiles = append(changedFiles, diff.OldPath) } else {
// compare接口获取两个commit之间的最终的改动
diffs, err := client.Compare(ev.ProjectID, ev.Before, ev.After)
if err != nil {
gpem.log.Errorf("Failed to get push event diffs, error: %s", err)
return false, err
}
for _, diff := range diffs {
changedFiles = append(changedFiles, diff.NewPath)
changedFiles = append(changedFiles, diff.OldPath)
}
} }
if gpem.isYaml { if gpem.isYaml {
serviceChangeds := ServicesMatchChangesFiles(gpem.trigger.Rules.MatchFolders, changedFiles) serviceChangeds := ServicesMatchChangesFiles(gpem.trigger.Rules.MatchFolders, changedFiles)
......
...@@ -20,6 +20,7 @@ import ( ...@@ -20,6 +20,7 @@ import (
"fmt" "fmt"
"regexp" "regexp"
"strconv" "strconv"
"strings"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/xanzy/go-gitlab" "github.com/xanzy/go-gitlab"
...@@ -193,15 +194,25 @@ func (gpem *gitlabPushEventMatcherForWorkflowV4) Match(hookRepo *commonmodels.Ma ...@@ -193,15 +194,25 @@ func (gpem *gitlabPushEventMatcherForWorkflowV4) Match(hookRepo *commonmodels.Ma
return false, err return false, err
} }
// compare接口获取两个commit之间的最终的改动 // When push a new branch, ev.Before will be a lot of "0"
diffs, err := client.Compare(ev.ProjectID, ev.Before, ev.After) // So we should not use Compare
if err != nil { if strings.Count(ev.Before, "0") == len(ev.Before) {
gpem.log.Errorf("Failed to get push event diffs, error: %s", err) for _, commit := range ev.Commits {
return false, err changedFiles = append(changedFiles, commit.Added...)
} changedFiles = append(changedFiles, commit.Removed...)
for _, diff := range diffs { changedFiles = append(changedFiles, commit.Modified...)
changedFiles = append(changedFiles, diff.NewPath) }
changedFiles = append(changedFiles, diff.OldPath) } else {
// compare接口获取两个commit之间的最终的改动
diffs, err := client.Compare(ev.ProjectID, ev.Before, ev.After)
if err != nil {
gpem.log.Errorf("Failed to get push event diffs, error: %s", err)
return false, err
}
for _, diff := range diffs {
changedFiles = append(changedFiles, diff.NewPath)
changedFiles = append(changedFiles, diff.OldPath)
}
} }
if gpem.isYaml { if gpem.isYaml {
serviceChangeds := ServicesMatchChangesFiles(gpem.trigger.Rules.MatchFolders, changedFiles) serviceChangeds := ServicesMatchChangesFiles(gpem.trigger.Rules.MatchFolders, changedFiles)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册