diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2024-02-17 20:01:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-17 20:01:28 +0100 |
| commit | 79c8780d84756c834b8b91cd8c1bb955e1555b46 (patch) | |
| tree | 35cea6438fee4b008b8fd1fe6d577587d605e159 | |
| parent | 3c6a265ae4f5a8a2b24eb6029413738a1a6880e2 (diff) | |
| parent | 17e329777fedae708cbc5170787bd8481989e7fd (diff) | |
| download | rust-79c8780d84756c834b8b91cd8c1bb955e1555b46.tar.gz rust-79c8780d84756c834b8b91cd8c1bb955e1555b46.zip | |
Merge pull request #432 from tempdragon/master
Use shallow clone in test.rs to reduce cloning overhead
| -rw-r--r-- | build_system/src/test.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/build_system/src/test.rs b/build_system/src/test.rs index d7f7a0eb47e..9fe9708c291 100644 --- a/build_system/src/test.rs +++ b/build_system/src/test.rs @@ -499,17 +499,42 @@ fn setup_rustc(env: &mut Env, args: &TestArg) -> Result<PathBuf, String> { &"clone", &"https://github.com/rust-lang/rust.git", &rust_dir_path, + &"--depth", + &"1", ], None, Some(env), ); let rust_dir: Option<&Path> = Some(&rust_dir_path); run_command(&[&"git", &"checkout", &"--", &"tests/"], rust_dir)?; - run_command_with_output_and_env(&[&"git", &"fetch"], rust_dir, Some(env))?; let rustc_commit = match rustc_version_info(env.get("RUSTC").map(|s| s.as_str()))?.commit_hash { Some(commit_hash) => commit_hash, None => return Err("Couldn't retrieve rustc commit hash".to_string()), }; + let has_commit = { + if let Ok(ty) = run_command_with_env( + &[&"git", &"cat-file", &"-t", &rustc_commit.as_str()], + rust_dir, + Some(env), + ) { + String::from_utf8_lossy(&ty.stdout).to_string() == "commit" + } else { + false + } + }; + if !has_commit { + run_command_with_output_and_env( + &[ + &"git", + &"fetch", + &"https://github.com/rust-lang/rust.git", + &rustc_commit.as_str(), + &"--depth=1", + ], + rust_dir, + Some(env), + )? + }; if rustc_commit != "unknown" { run_command_with_output_and_env( &[&"git", &"checkout", &rustc_commit], |
