about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2023-03-05 20:57:22 +0100
committerGitHub <noreply@github.com>2023-03-05 20:57:22 +0100
commit7125df06c3b420c1774bf83006529562ebba7a7b (patch)
tree61abb46eadcab63052243038c4fbd62cbb46cf58 /src/bootstrap
parent970f263156dc5b080e895899977171500bb982ae (diff)
parent620efed932766b4cd516a26205fe47f51f54f911 (diff)
downloadrust-7125df06c3b420c1774bf83006529562ebba7a7b.tar.gz
rust-7125df06c3b420c1774bf83006529562ebba7a7b.zip
Rollup merge of #108773 - jyn514:faster-tidy-fmt, r=albertlarsan68
x fmt: Only check modified files locally

Previously, `x fmt` would only format modified files, while `x fmt .` and `x fmt --check` would still look at all files. After this change, `x fmt --check` only looks at modified files locally.

I feel pretty confident in this change - other than https://github.com/rust-lang/rust/issues/106261, no one has reported bugs in `get_modified_rs_files` since it was added in https://github.com/rust-lang/rust/pull/105702.

Combined with the changes in https://github.com/rust-lang/rust/pull/108772, this brings the time for me to run `x t tidy` with a hot FS cache down from 5 to 2 seconds (and moves the majority of the time spent back to `tidy check`, which means it can be sped up more in the future).
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/format.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/bootstrap/format.rs b/src/bootstrap/format.rs
index 6d5753e8a6d..36372512562 100644
--- a/src/bootstrap/format.rs
+++ b/src/bootstrap/format.rs
@@ -2,6 +2,7 @@
 
 use crate::builder::Builder;
 use crate::util::{output, program_out_of_date, t};
+use build_helper::ci::CiEnv;
 use build_helper::git::get_git_modified_files;
 use ignore::WalkBuilder;
 use std::collections::VecDeque;
@@ -156,7 +157,10 @@ pub fn format(build: &Builder<'_>, check: bool, paths: &[PathBuf]) {
                 // preventing the latter from being formatted.
                 ignore_fmt.add(&format!("!/{}", untracked_path)).expect(&untracked_path);
             }
-            if !check && paths.is_empty() {
+            // Only check modified files locally to speed up runtime.
+            // We still check all files in CI to avoid bugs in `get_modified_rs_files` letting regressions slip through;
+            // we also care about CI time less since this is still very fast compared to building the compiler.
+            if !CiEnv::is_ci() && paths.is_empty() {
                 match get_modified_rs_files(build) {
                     Ok(Some(files)) => {
                         for file in files {