Skip to content

Commit 5ed161d

Browse files
committed
Add merge_queue_enabled option to rust-bors.toml
1 parent aed7cec commit 5ed161d

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

rust-bors.example.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# (Required)
33
timeout = 3600
44

5+
# Whether to enable the merge queue or not.
6+
# When enabled, approved PRs will be automatically merged.
7+
# (Optional, defaults to false)
8+
merge_queue_enabled = true
9+
510
# Labels that should be set on a PR after an event happens.
611
# "+<label>" adds the label, while "-<label>" removes the label after the event.
712
# Supported events:

src/bors/merge_queue.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ pub async fn merge_queue_tick(ctx: Arc<BorsContext>) -> anyhow::Result<()> {
2323
continue;
2424
}
2525
};
26+
27+
if !repo.config.load().merge_queue_enabled {
28+
continue;
29+
}
30+
2631
let priority = repo_db.tree_state.priority();
2732
let prs = ctx.db.get_merge_queue_prs(repo_name, priority).await?;
2833

src/config.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ pub struct RepositoryConfig {
2121
pub labels: HashMap<LabelTrigger, Vec<LabelModification>>,
2222
#[serde(default, deserialize_with = "deserialize_duration_from_secs_opt")]
2323
pub min_ci_time: Option<Duration>,
24+
#[serde(default)]
25+
pub merge_queue_enabled: bool,
2426
}
2527

2628
fn default_timeout() -> Duration {
@@ -167,6 +169,27 @@ mod tests {
167169
assert_eq!(config.min_ci_time, Some(Duration::from_secs(3600)));
168170
}
169171

172+
#[test]
173+
fn deserialize_merge_queue_enabled_default() {
174+
let content = "";
175+
let config = load_config(content);
176+
assert_eq!(config.merge_queue_enabled, false);
177+
}
178+
179+
#[test]
180+
fn deserialize_merge_queue_enabled_true() {
181+
let content = "merge_queue_enabled = true";
182+
let config = load_config(content);
183+
assert_eq!(config.merge_queue_enabled, true);
184+
}
185+
186+
#[test]
187+
fn deserialize_merge_queue_enabled_false() {
188+
let content = "merge_queue_enabled = false";
189+
let config = load_config(content);
190+
assert_eq!(config.merge_queue_enabled, false);
191+
}
192+
170193
#[test]
171194
fn deserialize_labels() {
172195
let content = r#"[labels]

0 commit comments

Comments
 (0)