Skip to content

Commit b536d10

Browse files
authored
feat: no rebase label
1 parent 7ab11f8 commit b536d10

File tree

5 files changed

+16
-16
lines changed

5 files changed

+16
-16
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+
MergeNoRebase string `yaml:"mergeNoRebase,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+
MergeNoRebase: "bot/merge-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.mergeNoRebase": cfg.Markers.MergeNoRebase,
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+
MergeNoRebase: "bot/merge-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+
MergeNoRebase: "bot/merge-no-rebase",
113115
},
114116
Retry: Retry{
115117
Interval: 1 * time.Minute,

pkg/repository/repository.go

Lines changed: 6 additions & 16 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.MergeNoRebase,
116117
}
117118
err = r.removeLabels(ctx, pr, labelsToRemove)
118119
ignoreError(ctx, err)
@@ -161,26 +162,15 @@ func (r *Repository) process(ctx context.Context, pr *github.PullRequest) error
161162
}
162163

163164
// Need to be up to date?
164-
if needUpdate {
165-
if upToDateBranch {
166-
err := r.merge(ctx, pr, mergeMethod)
167-
if err != nil {
168-
return err
169-
}
170-
} else {
171-
err := r.update(ctx, pr)
172-
if err != nil {
173-
return fmt.Errorf("failed to update: %w", err)
174-
}
175-
}
176-
} else {
177-
err := r.merge(ctx, pr, mergeMethod)
165+
if needUpdate && !upToDateBranch && !hasLabel(pr, r.markers.MergeNoRebase) {
166+
err := r.update(ctx, pr)
178167
if err != nil {
179-
return err
168+
err = fmt.Errorf("failed to update: %w", err)
180169
}
170+
return err
181171
}
182172

183-
return nil
173+
return r.merge(ctx, pr, mergeMethod)
184174
}
185175

186176
func (r *Repository) callHuman(ctx context.Context, pr *github.PullRequest, message string) {

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.MergeNoRebase,
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.MergeNoRebase) {
159+
return ActionMerge, nil
160+
}
161+
158162
// action rebase
159163
return ActionRebase, nil
160164
}

0 commit comments

Comments
 (0)