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::path::{Path, PathBuf};
|
||||||
use std::process::{Command, Stdio};
|
use std::process::{Command, Stdio};
|
||||||
|
|
||||||
|
use crate::ci::CiEnv;
|
||||||
|
|
||||||
pub struct GitConfig<'a> {
|
pub struct GitConfig<'a> {
|
||||||
pub git_repository: &'a str,
|
pub git_repository: &'a str,
|
||||||
pub nightly_branch: &'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.
|
/// 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
|
/// It looks for the most recent commit made by the merge bot by matching the author's email
|
||||||
/// by the merge bot by matching the author's email address with the merge bot's email.
|
/// address with the merge bot's email.
|
||||||
pub fn get_closest_merge_commit(
|
pub fn get_closest_merge_commit(
|
||||||
git_dir: Option<&Path>,
|
git_dir: Option<&Path>,
|
||||||
config: &GitConfig<'_>,
|
config: &GitConfig<'_>,
|
||||||
@ -127,7 +129,15 @@ pub fn get_closest_merge_commit(
|
|||||||
git.current_dir(git_dir);
|
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([
|
git.args([
|
||||||
"rev-list",
|
"rev-list",
|
||||||
|
Loading…
Reference in New Issue
Block a user