Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pkg/conf/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type Markers struct {
MergeMethodPrefix string `yaml:"mergeMethodPrefix,omitempty"`
MergeRetryPrefix string `yaml:"mergeRetryPrefix,omitempty"`
NeedHumanMerge string `yaml:"needHumanMerge,omitempty"`
MergeNoRebase string `yaml:"mergeNoRebase,omitempty"`
NoMerge string `yaml:"noMerge,omitempty"`
}

Expand Down Expand Up @@ -87,6 +88,7 @@ func Load(filename string) (Configuration, error) {
MergeRetryPrefix: "bot/merge-retry-",
NeedHumanMerge: "bot/need-human-merge",
NoMerge: "bot/no-merge",
MergeNoRebase: "bot/merge-no-rebase",
},
Retry: Retry{
Interval: 1 * time.Minute,
Expand Down Expand Up @@ -173,6 +175,7 @@ func validate(cfg Configuration) error {
"markers.mergeMethodPrefix": cfg.Markers.MergeMethodPrefix,
"markers.needHumanMerge": cfg.Markers.NeedHumanMerge,
"markers.noMerge": cfg.Markers.NoMerge,
"markers.mergeNoRebase": cfg.Markers.MergeNoRebase,
}

for field, value := range fields {
Expand Down
2 changes: 2 additions & 0 deletions pkg/conf/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func TestLoad(t *testing.T) {
MergeRetryPrefix: "bot/merge-retry-",
NeedHumanMerge: "bot/need-human-merge",
NoMerge: "bot/no-merge",
MergeNoRebase: "bot/merge-no-rebase",
},
Retry: Retry{
Interval: 1 * time.Minute,
Expand Down Expand Up @@ -110,6 +111,7 @@ func TestLoad(t *testing.T) {
MergeRetryPrefix: "bot/merge-retry-",
NeedHumanMerge: "bot/need-human-merge",
NoMerge: "bot/no-merge",
MergeNoRebase: "bot/merge-no-rebase",
},
Retry: Retry{
Interval: 1 * time.Minute,
Expand Down
14 changes: 11 additions & 3 deletions pkg/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ func (r *Repository) process(ctx context.Context, pr *github.PullRequest) error
r.markers.MergeMethodPrefix + conf.MergeMethodMerge,
r.markers.MergeMethodPrefix + conf.MergeMethodRebase,
r.markers.MergeMethodPrefix + conf.MergeMethodFastForward,
r.markers.MergeNoRebase,
}
err = r.removeLabels(ctx, pr, labelsToRemove)
ignoreError(ctx, err)
Expand Down Expand Up @@ -168,9 +169,16 @@ func (r *Repository) process(ctx context.Context, pr *github.PullRequest) error
return err
}
} else {
err := r.update(ctx, pr)
if err != nil {
return fmt.Errorf("failed to update: %w", err)
if hasLabel(pr, r.markers.MergeNoRebase) {
err := r.merge(ctx, pr, mergeMethod)
if err != nil {
return err
}
} else {
err := r.update(ctx, pr)
if err != nil {
return fmt.Errorf("failed to update: %w", err)
}
}
}
} else {
Expand Down
1 change: 1 addition & 0 deletions pkg/repository/repository_merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ func (r *Repository) merge(ctx context.Context, pr *github.PullRequest, mergeMet
r.markers.MergeMethodPrefix + conf.MergeMethodMerge,
r.markers.MergeMethodPrefix + conf.MergeMethodRebase,
r.markers.MergeMethodPrefix + conf.MergeMethodFastForward,
r.markers.MergeNoRebase,
}
err = r.removeLabels(ctx, pr, labelsToRemove)
ignoreError(ctx, err)
Expand Down
4 changes: 4 additions & 0 deletions pkg/repository/repository_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,10 @@ func (r *Repository) getUpdateAction(ctx context.Context, pr *github.PullRequest
return ActionMerge, nil
}

if hasLabel(pr, r.markers.MergeNoRebase) {
return ActionMerge, nil
}

// action rebase
return ActionRebase, nil
}
Expand Down