about summary refs log tree commit diff
path: root/src/build_helper
diff options
context:
space:
mode:
authorJacob Pratt <jacob@jhpratt.dev>2025-03-23 20:44:08 -0400
committerGitHub <noreply@github.com>2025-03-23 20:44:08 -0400
commit95994f94ff5c9335426af4dec19afb5024f82fab (patch)
treeb276afad3b47724d83c0f5f9643387b6042d3773 /src/build_helper
parent7290b04b0a46de2118968aa556bfc0970aac6661 (diff)
parent0ee94562c9e7e2e75a13f06d9820cd191e21a06a (diff)
downloadrust-95994f94ff5c9335426af4dec19afb5024f82fab.tar.gz
rust-95994f94ff5c9335426af4dec19afb5024f82fab.zip
Rollup merge of #137593 - RalfJung:subtree-sync-download-llvm, r=Mark-Simulacrum
fix download-llvm logic for subtree sync branches

Fixes https://github.com/rust-lang/rust/issues/101907

Cc `@onur-ozkan`
r? `@Mark-Simulacrum`
Diffstat (limited to 'src/build_helper')
-rw-r--r--src/build_helper/src/git.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/build_helper/src/git.rs b/src/build_helper/src/git.rs
index 693e0fc8f46..f47d5663fc9 100644
--- a/src/build_helper/src/git.rs
+++ b/src/build_helper/src/git.rs
@@ -140,6 +140,7 @@ pub fn get_closest_merge_commit(
             //    cd \"/checkout\" && \"git\" \"merge-base\" \"origin/master\" \"HEAD\"\nexpected success, got: exit status: 1\n"
             // ```
             // Investigate and resolve this issue instead of skipping it like this.
+            // NOTE (2025-03): this is probably caused by CI using a sparse checkout.
             (channel == "nightly" || !CiEnv::is_rust_lang_managed_ci_job())
         {
             git_upstream_merge_base(config, git_dir).unwrap()
@@ -150,11 +151,18 @@ pub fn get_closest_merge_commit(
         }
     };
 
+    // Now that rust-lang/rust is the only repo using bors, we can search the entire
+    // history for a bors commit, not just "first parents". This is crucial to make
+    // this logic work when the user has currently checked out a subtree sync branch.
+    // At the same time, we use this logic in CI where only a tiny part of the history
+    // is even checked out, making this kind of history search very fragile. It turns
+    // out that by adding `--diff-merges=first-parent`, we get a usable reply
+    // even for sparse checkouts: it will just return the most recent bors commit.
     git.args([
         "rev-list",
         &format!("--author={}", config.git_merge_commit_email),
         "-n1",
-        "--first-parent",
+        "--diff-merges=first-parent",
         &merge_base,
     ]);