force "HEAD" for non-CI and git_upstream_merge_base
for CI environment
When rust-lang/rust is configured as remote, some of the git logic (for tracking changed files) that uses get_closest_merge_commit starts to produce annoying results as the upstream branch becomes outdated quickly (since it isn't updated with git pull). We can rely on HEAD for non-CI environments as we specifically treat bors commits as merge commits, which also exist on upstream. As for CI environments, we should use `git_upstream_merge_base` to correctly track modified files as bors commits may be in `HEAD` but not yet on the upstream remote. Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
parent
11ee3a830b
commit
33ac202904
@ -1,6 +1,8 @@
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::process::{Command, Stdio};
|
||||
|
||||
use crate::ci::CiEnv;
|
||||
|
||||
pub struct GitConfig<'a> {
|
||||
pub git_repository: &'a str,
|
||||
pub nightly_branch: &'a str,
|
||||
@ -114,8 +116,8 @@ fn git_upstream_merge_base(
|
||||
|
||||
/// Searches for the nearest merge commit in the repository that also exists upstream.
|
||||
///
|
||||
/// If it fails to find the upstream remote, it then looks for the most recent commit made
|
||||
/// by the merge bot by matching the author's email address with the merge bot's email.
|
||||
/// It looks for the most recent commit made by the merge bot by matching the author's email
|
||||
/// address with the merge bot's email.
|
||||
pub fn get_closest_merge_commit(
|
||||
git_dir: Option<&Path>,
|
||||
config: &GitConfig<'_>,
|
||||
@ -127,7 +129,15 @@ pub fn get_closest_merge_commit(
|
||||
git.current_dir(git_dir);
|
||||
}
|
||||
|
||||
let merge_base = git_upstream_merge_base(config, git_dir).unwrap_or_else(|_| "HEAD".into());
|
||||
let merge_base = {
|
||||
if CiEnv::is_ci() {
|
||||
git_upstream_merge_base(config, git_dir).unwrap()
|
||||
} else {
|
||||
// For non-CI environments, ignore rust-lang/rust upstream as it usually gets
|
||||
// outdated very quickly.
|
||||
"HEAD".to_string()
|
||||
}
|
||||
};
|
||||
|
||||
git.args([
|
||||
"rev-list",
|
||||
|
Loading…
Reference in New Issue
Block a user