summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Worthe <justin@jemstep.com>2020-01-31 17:11:35 +0200
committerJustin Worthe <justin@jemstep.com>2020-01-31 17:11:35 +0200
commit11701a7d00aebfa4022bc7157869e769349ff67f (patch)
tree505df8675b8f47ac527c4ceb2b8b1c423c2c76bd
parentdd36fa1da0a8a95e5010c07e0ec984f7038fad4a (diff)
PYKE-11909: Updated multiple author policy to allow merging between mainlines
-rw-r--r--src/policies.rs6
-rw-r--r--tests/policies_test.rs6
2 files changed, 9 insertions, 3 deletions
diff --git a/src/policies.rs b/src/policies.rs
index eb5dcee..d11261f 100644
--- a/src/policies.rs
+++ b/src/policies.rs
@@ -323,6 +323,12 @@ fn verify_different_authors<G: Git>(
} else if commits.len() == 0 {
info!("Multiple author verification passed for {}: No new commits pushed, does not require multiple authors", new_commit_id);
Ok(PolicyResult::Ok)
+ } else if commits.len() == 1
+ && (commits[0].is_identical_tree_to_any_parent
+ || git.is_trivial_merge_commit(&commits[0])?)
+ {
+ info!("Multiple author verification passed for {}: The commit is a trivial merge between mainline branches", new_commit_id);
+ Ok(PolicyResult::Ok)
} else {
let authors: HashSet<_> = commits
.iter()
diff --git a/tests/policies_test.rs b/tests/policies_test.rs
index b5708dd..abdd047 100644
--- a/tests/policies_test.rs
+++ b/tests/policies_test.rs
@@ -261,13 +261,13 @@ fn verify_git_commits_author_merged_own_code_not_on_head() {
}
#[test]
-fn verify_git_commits_author_merged_own_code_on_configured_mainline() {
+fn verify_git_commits_author_trivial_merge_between_mainlines() {
before_all();
let result = policies::verify_git_commits::<LiveGit, MockGpg>(
&LiveGit::new(
"./",
GitConfig {
- mainlines: vec!["valid-*".into()],
+ mainlines: vec!["master".into(), "valid-*".into()],
},
)
.unwrap(),
@@ -278,7 +278,7 @@ fn verify_git_commits_author_merged_own_code_on_configured_mainline() {
"refs/heads/valid-branch",
)
.unwrap();
- assert!(result.is_err());
+ assert!(result.is_ok(), "Error: {:?}", result);
}
#[test]