From 2c22de1cecf76ee55229f15f40e84842c5d70483 Mon Sep 17 00:00:00 2001 From: David Kellum Date: Sat, 28 Jul 2018 07:20:33 -0700 Subject: [PATCH] Improve verbose console and logging in package check_not_dirty Also fixes some tests. However without a fix in git2-rs, this is currently expected to fail tests on windows (only), in informative ways. --- src/cargo/ops/cargo_package.rs | 25 ++++++++++++++++--------- tests/testsuite/package.rs | 2 ++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/cargo/ops/cargo_package.rs b/src/cargo/ops/cargo_package.rs index c9850bfc223..77b6b39ecc0 100644 --- a/src/cargo/ops/cargo_package.rs +++ b/src/cargo/ops/cargo_package.rs @@ -59,7 +59,7 @@ pub fn package(ws: &Workspace, opts: &PackageOpts) -> CargoResult CargoResult<()> { Ok(()) } -fn check_not_dirty(p: &Package, src: &PathSource) -> CargoResult<()> { +fn check_not_dirty(p: &Package, src: &PathSource, config: &Config) -> CargoResult<()> { if let Ok(repo) = git2::Repository::discover(p.root()) { if let Some(workdir) = repo.workdir() { - debug!( - "found a git repo at {:?}, checking if index present", - workdir - ); + debug!("found a git repo at {:?}", workdir); let path = p.manifest_path(); let path = path.strip_prefix(workdir).unwrap_or(path); if let Ok(status) = repo.status_file(path) { if (status & git2::Status::IGNORED).is_empty() { - debug!("Cargo.toml found in repo, checking if dirty"); + debug!("found (git) Cargo.toml at {:?}", path); return git(p, src, &repo); } } + config.shell().verbose(|shell| { + shell.warn(format!( + "No (git) Cargo.toml found at ({})", + path.display() + )) + })?; } + } else { + config.shell().verbose(|shell| { + shell.warn(format!("No (git) VCS found for ({})", p.root().display())) + })?; } - // No VCS recognized, we don't know if the directory is dirty or not, so we - // have to assume that it's clean. + // No VCS with a checked in Cargo.toml found. so we don't know if the + // directory is dirty or not, so we have to assume that it's clean. return Ok(()); fn git(p: &Package, src: &PathSource, repo: &git2::Repository) -> CargoResult<()> { diff --git a/tests/testsuite/package.rs b/tests/testsuite/package.rs index e00f6517888..e1e60b6986f 100644 --- a/tests/testsuite/package.rs +++ b/tests/testsuite/package.rs @@ -326,6 +326,7 @@ fn exclude() { "\ [WARNING] manifest has no description[..] See http://doc.crates.io/manifest.html#package-metadata for more info. +[WARNING] No (git) Cargo.toml found at ([..]) [PACKAGING] foo v0.0.1 ([..]) [WARNING] [..] file `dir_root_1[/]some_dir[/]file` WILL be excluded [..] See [..] @@ -415,6 +416,7 @@ fn include() { "\ [WARNING] manifest has no description[..] See http://doc.crates.io/manifest.html#package-metadata for more info. +[WARNING] No (git) Cargo.toml found at ([..]) [PACKAGING] foo v0.0.1 ([..]) [ARCHIVING] [..] [ARCHIVING] [..]