Skip to content

Commit 11870e3

Browse files
committed
Auto merge of #12513 - weihanglo:fix-bump-check, r=epage
fix(xtask-bump-check): query by package name to detect changes
2 parents 93e1aa2 + 1ee9db3 commit 11870e3

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

crates/xtask-bump-check/src/xtask.rs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//! but forgot to bump its version.
1111
//! ```
1212
13-
use std::collections::HashSet;
13+
use std::collections::HashMap;
1414
use std::fmt::Write;
1515
use std::fs;
1616
use std::task;
@@ -124,9 +124,9 @@ fn bump_check(args: &clap::ArgMatches, config: &mut cargo::util::Config) -> Carg
124124
if let Some(referenced_commit) = referenced_commit.as_ref() {
125125
status(&format!("compare against `{}`", referenced_commit.id()))?;
126126
for referenced_member in checkout_ws(&ws, &repo, referenced_commit)?.members() {
127-
let Some(changed_member) = changed_members.get(referenced_member) else {
128-
let name = referenced_member.name().as_str();
129-
tracing::trace!("skipping {name}, may be removed or not published");
127+
let pkg_name = referenced_member.name().as_str();
128+
let Some(changed_member) = changed_members.get(pkg_name) else {
129+
tracing::trace!("skipping {pkg_name}, may be removed or not published");
130130
continue;
131131
};
132132

@@ -317,7 +317,7 @@ fn changed<'r, 'ws>(
317317
repo: &'r git2::Repository,
318318
base_commit: &git2::Commit<'r>,
319319
head: &git2::Commit<'r>,
320-
) -> CargoResult<HashSet<&'ws Package>> {
320+
) -> CargoResult<HashMap<&'ws str, &'ws Package>> {
321321
let root_pkg_name = ws.current()?.name(); // `cargo` crate.
322322
let ws_members = ws
323323
.members()
@@ -334,19 +334,20 @@ fn changed<'r, 'ws>(
334334
let head_tree = head.as_object().peel_to_tree()?;
335335
let diff = repo.diff_tree_to_tree(Some(&base_tree), Some(&head_tree), Default::default())?;
336336

337-
let mut changed_members = HashSet::new();
337+
let mut changed_members = HashMap::new();
338338

339339
for delta in diff.deltas() {
340340
let old = delta.old_file().path().unwrap();
341341
let new = delta.new_file().path().unwrap();
342342
for (ref pkg_root, pkg) in ws_members.iter() {
343343
if old.starts_with(pkg_root) || new.starts_with(pkg_root) {
344-
changed_members.insert(*pkg);
344+
changed_members.insert(pkg.name().as_str(), *pkg);
345345
break;
346346
}
347347
}
348348
}
349349

350+
tracing::trace!("changed_members: {:?}", changed_members.keys());
350351
Ok(changed_members)
351352
}
352353

@@ -355,7 +356,7 @@ fn changed<'r, 'ws>(
355356
/// Assumption: We always release a version larger than all existing versions.
356357
fn check_crates_io<'a>(
357358
config: &Config,
358-
changed_members: &HashSet<&'a Package>,
359+
changed_members: &HashMap<&'a str, &'a Package>,
359360
needs_bump: &mut Vec<&'a Package>,
360361
) -> CargoResult<()> {
361362
let source_id = SourceId::crates_io(config)?;
@@ -366,10 +367,10 @@ fn check_crates_io<'a>(
366367
STATUS,
367368
format_args!("compare against `{}`", source_id.display_registry_name()),
368369
)?;
369-
for member in changed_members {
370-
let (name, current) = (member.name(), member.version());
370+
for (name, member) in changed_members {
371+
let current = member.version();
371372
let version_req = format!(">={current}");
372-
let query = Dependency::parse(name, Some(&version_req), source_id)?;
373+
let query = Dependency::parse(*name, Some(&version_req), source_id)?;
373374
let possibilities = loop {
374375
// Exact to avoid returning all for path/git
375376
match registry.query_vec(&query, QueryKind::Exact) {
@@ -382,6 +383,13 @@ fn check_crates_io<'a>(
382383
if possibilities.is_empty() {
383384
tracing::trace!("dep `{name}` has no version greater than or equal to `{current}`");
384385
} else {
386+
tracing::trace!(
387+
"`{name}@{current}` needs a bump because its should have a version newer than crates.io: {:?}`",
388+
possibilities
389+
.iter()
390+
.map(|s| format!("{}@{}", s.name(), s.version()))
391+
.collect::<Vec<_>>(),
392+
);
385393
needs_bump.push(member);
386394
}
387395
}

0 commit comments

Comments
 (0)