From f0e499fb7e93f38178373fd369a0af3190e2c684 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Wed, 8 Apr 2026 09:30:33 -0600 Subject: [PATCH] Fetch refs in compliance tools (#53412) v0.232.x Release Notes: - N/A --- tooling/compliance/src/git.rs | 26 ++++++++++++++++++++++++++ tooling/xtask/src/tasks/compliance.rs | 8 ++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/tooling/compliance/src/git.rs b/tooling/compliance/src/git.rs index 1ec5f6866305f7bef89ae56ff3631d5e2998b048..1c54656b90c58123d93816dccf4f3d60cc5f93e2 100644 --- a/tooling/compliance/src/git.rs +++ b/tooling/compliance/src/git.rs @@ -343,6 +343,32 @@ impl FromStr for NoOutput { } } +pub struct FetchRefs { + branch: String, +} + +impl FetchRefs { + pub fn new(branch: String) -> Self { + Self { branch } + } +} + +impl Subcommand for FetchRefs { + type ParsedOutput = NoOutput; + + fn args(&self) -> impl IntoIterator { + [ + "fetch".to_string(), + "origin".to_string(), + "refs/tags/*:refs/tags/*".to_string(), + format!( + "refs/heads/{}:refs/remotes/origin/{}", + self.branch, self.branch + ), + ] + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/tooling/xtask/src/tasks/compliance.rs b/tooling/xtask/src/tasks/compliance.rs index f6a80e06826bdc1f96739f0113b648c0b6296653..47f43cdc63efd43f39d5e069548242c4a6c2f215 100644 --- a/tooling/xtask/src/tasks/compliance.rs +++ b/tooling/xtask/src/tasks/compliance.rs @@ -5,7 +5,7 @@ use clap::Parser; use compliance::{ checks::Reporter, - git::{CommitsFromVersionToHead, GetVersionTags, GitCommand, VersionTag}, + git::{CommitsFromVersionToHead, FetchRefs, GetVersionTags, GitCommand, VersionTag}, github::GitHubClient, report::ReportReviewSummary, }; @@ -44,6 +44,10 @@ async fn check_compliance_impl(args: ComplianceArgs) -> Result<()> { let key = std::env::var("GITHUB_APP_KEY").context("Missing GITHUB_APP_KEY")?; let tag = args.version_tag(); + let version_branch = args.version_branch(); + + println!("Fetching tags and branch {version_branch}..."); + GitCommand::run(FetchRefs::new(version_branch.clone()))?; let previous_version = GitCommand::run(GetVersionTags)? .sorted() @@ -64,7 +68,7 @@ async fn check_compliance_impl(args: ComplianceArgs) -> Result<()> { let commits = GitCommand::run(CommitsFromVersionToHead::new( previous_version, - args.version_branch(), + version_branch, ))?; let Some(range) = commits.range() else {