D8362: rust-chg: move set_current_dir() to Locator
yuja (Yuya Nishihara)
phabricator at mercurial-scm.org
Thu Apr 2 11:12:50 UTC 2020
yuja created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
This is necessary to run config validation in proper environment.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D8362
AFFECTED FILES
rust/chg/src/locator.rs
rust/chg/src/main.rs
CHANGE DETAILS
diff --git a/rust/chg/src/main.rs b/rust/chg/src/main.rs
--- a/rust/chg/src/main.rs
+++ b/rust/chg/src/main.rs
@@ -73,14 +73,12 @@
}
fn run() -> io::Result<i32> {
- let current_dir = env::current_dir()?;
let loc = Locator::prepare_from_env()?;
let handler = ChgUiHandler::new();
let (result_tx, result_rx) = oneshot::channel();
let fut = loc
.connect()
- .and_then(|(_, client)| client.set_current_dir(current_dir))
- .and_then(|client| client.attach_io(io::stdin(), io::stdout(), io::stderr()))
+ .and_then(|(_, client)| client.attach_io(io::stdin(), io::stdout(), io::stderr()))
.and_then(|client| {
let pid = client.server_spec().process_id.unwrap();
let pgid = client.server_spec().process_group_id;
diff --git a/rust/chg/src/locator.rs b/rust/chg/src/locator.rs
--- a/rust/chg/src/locator.rs
+++ b/rust/chg/src/locator.rs
@@ -20,6 +20,7 @@
use tokio_process::{Child, CommandExt};
use tokio_timer;
+use super::clientext::ChgClientExt;
use super::message::ServerSpec;
use super::procutil;
@@ -80,6 +81,11 @@
check_server_capabilities(client.server_spec())?;
Ok((loc, client))
})
+ .and_then(|(loc, client)| {
+ client
+ .set_current_dir(&loc.current_dir)
+ .map(|client| (loc, client))
+ })
}
/// Spawns new server process and connects to it.
To: yuja, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list