From 5fbaf70e5b0af9aeda01fa8a704cb586bad80b5b Mon Sep 17 00:00:00 2001 From: firestar99 Date: Tue, 28 Jul 2026 19:43:56 +0200 Subject: [PATCH] xtask headers: skip update and autogen when already set to version --- xtask/src/headers.rs | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/xtask/src/headers.rs b/xtask/src/headers.rs index fa7be0b7..6e534d9c 100644 --- a/xtask/src/headers.rs +++ b/xtask/src/headers.rs @@ -40,13 +40,29 @@ pub struct HeadersUpdate { impl HeadersUpdate { pub fn run(self, repo: &GitRepo) -> anyhow::Result<()> { - let branch = match self.rev { - Some(rev) => rev, - None => SubmoduleBranches::fetch(repo, SUBMODULE_PATH, BRANCH_PREFIX)? - .highest_semver_branch(BRANCH_PREFIX)?, + let branch = if let Some(rev) = self.rev { + rev + } else { + let branch = SubmoduleBranches::fetch(repo, SUBMODULE_PATH, BRANCH_PREFIX)? + .highest_semver_branch(BRANCH_PREFIX)?; + println!("Newest SPIR-V header version is `{branch}`"); + branch }; - println!("Setting submodule `{SUBMODULE_PATH}` to `{branch}`"); + let old_branch = repo + .git(&[ + "config", + "--file", + ".gitmodules", + &format!("submodule.{SUBMODULE_PATH}.branch"), + ]) + .context("reading submodule branch from .gitmodules")?; + if old_branch.trim() == branch { + println!("SPIR-V headers is already set to `{branch}`, skipping"); + return Ok(()); + } + + println!("Setting SPIR-V headers to `{branch}`"); repo.git(&[ "submodule", "set-branch",