Skip to content

Commit e98e677

Browse files
committed
feat: add bot/no-rebase label
1 parent 7ab11f8 commit e98e677

File tree

5 files changed

+21
-3
lines changed

5 files changed

+21
-3
lines changed

pkg/conf/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ type Markers struct {
4848
MergeMethodPrefix string `yaml:"mergeMethodPrefix,omitempty"`
4949
MergeRetryPrefix string `yaml:"mergeRetryPrefix,omitempty"`
5050
NeedHumanMerge string `yaml:"needHumanMerge,omitempty"`
51+
NoRebase string `yaml:"noRebase,omitempty"`
5152
NoMerge string `yaml:"noMerge,omitempty"`
5253
}
5354

@@ -87,6 +88,7 @@ func Load(filename string) (Configuration, error) {
8788
MergeRetryPrefix: "bot/merge-retry-",
8889
NeedHumanMerge: "bot/need-human-merge",
8990
NoMerge: "bot/no-merge",
91+
NoRebase: "bot/no-rebase",
9092
},
9193
Retry: Retry{
9294
Interval: 1 * time.Minute,
@@ -173,6 +175,7 @@ func validate(cfg Configuration) error {
173175
"markers.mergeMethodPrefix": cfg.Markers.MergeMethodPrefix,
174176
"markers.needHumanMerge": cfg.Markers.NeedHumanMerge,
175177
"markers.noMerge": cfg.Markers.NoMerge,
178+
"markers.noRebase": cfg.Markers.NoRebase,
176179
}
177180

178181
for field, value := range fields {

pkg/conf/config_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func TestLoad(t *testing.T) {
4040
MergeRetryPrefix: "bot/merge-retry-",
4141
NeedHumanMerge: "bot/need-human-merge",
4242
NoMerge: "bot/no-merge",
43+
NoRebase: "bot/no-rebase",
4344
},
4445
Retry: Retry{
4546
Interval: 1 * time.Minute,
@@ -110,6 +111,7 @@ func TestLoad(t *testing.T) {
110111
MergeRetryPrefix: "bot/merge-retry-",
111112
NeedHumanMerge: "bot/need-human-merge",
112113
NoMerge: "bot/no-merge",
114+
NoRebase: "bot/no-rebase",
113115
},
114116
Retry: Retry{
115117
Interval: 1 * time.Minute,

pkg/repository/repository.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ func (r *Repository) process(ctx context.Context, pr *github.PullRequest) error
113113
r.markers.MergeMethodPrefix + conf.MergeMethodMerge,
114114
r.markers.MergeMethodPrefix + conf.MergeMethodRebase,
115115
r.markers.MergeMethodPrefix + conf.MergeMethodFastForward,
116+
r.markers.NoRebase,
116117
}
117118
err = r.removeLabels(ctx, pr, labelsToRemove)
118119
ignoreError(ctx, err)
@@ -168,9 +169,16 @@ func (r *Repository) process(ctx context.Context, pr *github.PullRequest) error
168169
return err
169170
}
170171
} else {
171-
err := r.update(ctx, pr)
172-
if err != nil {
173-
return fmt.Errorf("failed to update: %w", err)
172+
if hasLabel(pr, r.markers.NoRebase) {
173+
err := r.merge(ctx, pr, mergeMethod)
174+
if err != nil {
175+
return err
176+
}
177+
} else {
178+
err := r.update(ctx, pr)
179+
if err != nil {
180+
return fmt.Errorf("failed to update: %w", err)
181+
}
174182
}
175183
}
176184
} else {

pkg/repository/repository_merge.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ func (r *Repository) merge(ctx context.Context, pr *github.PullRequest, mergeMet
9393
r.markers.MergeMethodPrefix + conf.MergeMethodMerge,
9494
r.markers.MergeMethodPrefix + conf.MergeMethodRebase,
9595
r.markers.MergeMethodPrefix + conf.MergeMethodFastForward,
96+
r.markers.NoRebase,
9697
}
9798
err = r.removeLabels(ctx, pr, labelsToRemove)
9899
ignoreError(ctx, err)

pkg/repository/repository_update.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ func (r *Repository) getUpdateAction(ctx context.Context, pr *github.PullRequest
155155
return ActionMerge, nil
156156
}
157157

158+
if hasLabel(pr, r.markers.NoRebase) {
159+
return ActionMerge, nil
160+
}
161+
158162
// action rebase
159163
return ActionRebase, nil
160164
}

0 commit comments

Comments
 (0)