Skip to content

Commit 483ad7c

Browse files
committed
Keep existing package with git install
1 parent e137ee6 commit 483ad7c

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

src/cargo/core/workspace.rs

-7
Original file line numberDiff line numberDiff line change
@@ -833,13 +833,6 @@ impl<'cfg> Workspace<'cfg> {
833833
pub fn set_target_dir(&mut self, target_dir: Filesystem) {
834834
self.target_dir = Some(target_dir);
835835
}
836-
837-
// TODO: This seems like the wrong approach
838-
pub fn set_package(&mut self, package: Package) {
839-
let key = self.current_manifest.parent().unwrap();
840-
let package = MaybePackage::Package(package);
841-
self.packages.packages.insert(key.to_path_buf(), package);
842-
}
843836
}
844837

845838
impl<'cfg> Packages<'cfg> {

src/cargo/ops/cargo_install.rs

+11-8
Original file line numberDiff line numberDiff line change
@@ -215,27 +215,30 @@ fn install_one(
215215
Some(Filesystem::new(config.cwd().join("target-install")))
216216
};
217217

218+
let mut git_package = None;
218219
let mut ws = match overidden_target_dir {
219220
Some(dir) => Workspace::ephemeral(pkg, config, Some(dir), false)?,
220221
None => {
221222
let mut ws = Workspace::new(pkg.manifest_path(), config)?;
222223
ws.set_require_optional_deps(false);
223224

224225
// Use tempdir to build git depedencies to prevent bloat in cargo cache
225-
if source_id.is_git() && config.target_dir()?.is_none() {
226-
match TempFileBuilder::new().prefix("cargo-install").tempdir() {
227-
Ok(td) => ws.set_target_dir(Filesystem::new(td.path().to_owned())),
228-
// If tempfile creation fails, write to cargo cache but clean up afterwards
229-
Err(_) => needs_cleanup = true,
226+
if source_id.is_git() {
227+
if config.target_dir()?.is_none() {
228+
match TempFileBuilder::new().prefix("cargo-install").tempdir() {
229+
Ok(td) => ws.set_target_dir(Filesystem::new(td.path().to_owned())),
230+
// If tempfile creation fails, write to cargo cache but clean up afterwards
231+
Err(_) => needs_cleanup = true,
232+
}
230233
}
234+
git_package = Some(&pkg);
231235
}
232-
ws.set_package(pkg);
233236

234237
ws
235-
}
238+
},
236239
};
237240
ws.set_ignore_lock(config.lock_update_allowed());
238-
let pkg = ws.current()?;
241+
let pkg = git_package.map_or_else(|| ws.current(), |pkg| Ok(pkg))?;
239242

240243
if from_cwd {
241244
if pkg.manifest().edition() == Edition::Edition2015 {

0 commit comments

Comments
 (0)