mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
fix(publish): Downgrade version-exists error to warning on dry-run
This will get cherry-picked to beta Fixes #14721
This commit is contained in:
parent
ae6b279277
commit
947e1ffe3f
@ -133,7 +133,7 @@ pub fn publish(ws: &Workspace<'_>, opts: &PublishOpts<'_>) -> CargoResult<()> {
|
|||||||
.acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?;
|
.acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?;
|
||||||
|
|
||||||
for (pkg, _) in &pkgs {
|
for (pkg, _) in &pkgs {
|
||||||
verify_unpublished(pkg, &mut source, &source_ids)?;
|
verify_unpublished(pkg, &mut source, &source_ids, opts.dry_run, opts.gctx)?;
|
||||||
verify_dependencies(pkg, ®istry, source_ids.original)?;
|
verify_dependencies(pkg, ®istry, source_ids.original)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -368,6 +368,8 @@ fn verify_unpublished(
|
|||||||
pkg: &Package,
|
pkg: &Package,
|
||||||
source: &mut RegistrySource<'_>,
|
source: &mut RegistrySource<'_>,
|
||||||
source_ids: &RegistrySourceIds,
|
source_ids: &RegistrySourceIds,
|
||||||
|
dry_run: bool,
|
||||||
|
gctx: &GlobalContext,
|
||||||
) -> CargoResult<()> {
|
) -> CargoResult<()> {
|
||||||
let query = Dependency::parse(
|
let query = Dependency::parse(
|
||||||
pkg.name(),
|
pkg.name(),
|
||||||
@ -383,6 +385,17 @@ fn verify_unpublished(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if !duplicate_query.is_empty() {
|
if !duplicate_query.is_empty() {
|
||||||
|
// Move the registry error earlier in the publish process.
|
||||||
|
// Since dry-run wouldn't talk to the registry to get the error, we downgrade it to a
|
||||||
|
// warning.
|
||||||
|
if dry_run {
|
||||||
|
gctx.shell().warn(format!(
|
||||||
|
"crate {}@{} already exists on {}",
|
||||||
|
pkg.name(),
|
||||||
|
pkg.version(),
|
||||||
|
source.describe()
|
||||||
|
))?;
|
||||||
|
} else {
|
||||||
bail!(
|
bail!(
|
||||||
"crate {}@{} already exists on {}",
|
"crate {}@{} already exists on {}",
|
||||||
pkg.name(),
|
pkg.name(),
|
||||||
@ -390,6 +403,7 @@ fn verify_unpublished(
|
|||||||
source.describe()
|
source.describe()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -152,10 +152,19 @@ fn duplicate_version() {
|
|||||||
|
|
||||||
p.cargo("publish --dry-run")
|
p.cargo("publish --dry-run")
|
||||||
.replace_crates_io(registry_dupl.index_url())
|
.replace_crates_io(registry_dupl.index_url())
|
||||||
.with_status(101)
|
|
||||||
.with_stderr_data(str![[r#"
|
.with_stderr_data(str![[r#"
|
||||||
[UPDATING] crates.io index
|
[UPDATING] crates.io index
|
||||||
[ERROR] crate foo@0.0.1 already exists on crates.io index
|
[WARNING] crate foo@0.0.1 already exists on crates.io index
|
||||||
|
[WARNING] manifest has no documentation, homepage or repository.
|
||||||
|
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info.
|
||||||
|
[PACKAGING] foo v0.0.1 ([ROOT]/foo)
|
||||||
|
[PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed)
|
||||||
|
[VERIFYING] foo v0.0.1 ([ROOT]/foo)
|
||||||
|
[WARNING] no edition set: defaulting to the 2015 edition while the latest is 2021
|
||||||
|
[COMPILING] foo v0.0.1 ([ROOT]/foo/target/package/foo-0.0.1)
|
||||||
|
[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s
|
||||||
|
[UPLOADING] foo v0.0.1 ([ROOT]/foo)
|
||||||
|
[WARNING] aborting upload due to dry run
|
||||||
|
|
||||||
"#]])
|
"#]])
|
||||||
.run();
|
.run();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user