mirror of
https://github.com/rust-lang/cargo
synced 2024-10-06 15:59:39 +00:00
Fix submodules on the initial checkout
The fast path bypassed updating the submodule which wasn't correct if we were the first checkout.
This commit is contained in:
parent
23bb49c807
commit
4d42cbd716
|
@ -195,11 +195,10 @@ impl GitDatabase {
|
|||
rev.clone()));
|
||||
|
||||
match self.remote.rev_for(dest, "HEAD") {
|
||||
Ok(ref head) if rev == *head => return Ok(checkout),
|
||||
Ok(ref head) if rev == *head => {}
|
||||
_ => try!(checkout.fetch()),
|
||||
}
|
||||
|
||||
try!(checkout.reset());
|
||||
try!(checkout.update_submodules());
|
||||
|
||||
Ok(checkout)
|
||||
|
@ -284,6 +283,7 @@ impl GitCheckout {
|
|||
// In this case we just use `origin` here instead of the database path.
|
||||
git!(self.location, "fetch", "--force", "--quiet", "origin");
|
||||
git!(self.location, "fetch", "--force", "--quiet", "--tags", "origin");
|
||||
try!(self.reset());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -674,3 +674,56 @@ test!(update_with_shared_deps {
|
|||
git = git_project.root().display(),
|
||||
compiling = COMPILING, dir = p.root().display())));
|
||||
})
|
||||
|
||||
test!(dep_with_submodule {
|
||||
let project = project("foo");
|
||||
let git_project = git_repo("dep1", |project| {
|
||||
project
|
||||
.file("Cargo.toml", r#"
|
||||
[package]
|
||||
name = "dep1"
|
||||
version = "0.5.0"
|
||||
authors = ["carlhuda@example.com"]
|
||||
"#)
|
||||
}).assert();
|
||||
let git_project2 = git_repo("dep2", |project| {
|
||||
project
|
||||
.file("lib.rs", "pub fn dep() {}")
|
||||
}).assert();
|
||||
|
||||
git_project.process("git").args(["submodule", "add"])
|
||||
.arg(git_project2.root()).arg("src").exec_with_output().assert();
|
||||
git_project.process("git").args(["add", "."]).exec_with_output().assert();
|
||||
git_project.process("git").args(["commit", "-m", "test"]).exec_with_output()
|
||||
.assert();
|
||||
|
||||
let project = project
|
||||
.file("Cargo.toml", format!(r#"
|
||||
[project]
|
||||
|
||||
name = "foo"
|
||||
version = "0.5.0"
|
||||
authors = ["wycats@example.com"]
|
||||
|
||||
[dependencies.dep1]
|
||||
|
||||
git = 'file:{}'
|
||||
"#, git_project.root().display()))
|
||||
.file("src/lib.rs", "
|
||||
extern crate dep1;
|
||||
pub fn foo() { dep1::dep() }
|
||||
");
|
||||
|
||||
let root = project.root();
|
||||
let git_root = git_project.root();
|
||||
|
||||
assert_that(project.cargo_process("cargo-build"),
|
||||
execs()
|
||||
.with_stdout(format!("{} git repository `file:{}`\n\
|
||||
{} dep1 v0.5.0 (file:{}#[..])\n\
|
||||
{} foo v0.5.0 (file:{})\n",
|
||||
UPDATING, git_root.display(),
|
||||
COMPILING, git_root.display(),
|
||||
COMPILING, root.display()))
|
||||
.with_stderr(""));
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue