##// END OF EJS Templates
changelog: disallow delayed write on inline changesets...
changelog: disallow delayed write on inline changesets Since this will never happens, we can make the situation invalid and to stop to handling the associated the case. This simplify the random access file reading too.

File last commit:

r50809:58074252 default
r52075:a93e52f0 default
Show More
path_utils.rs
55 lines | 1.7 KiB | application/rls-services+xml | RustLexer
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988 // path utils module
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
Simon Sapin
rhg: Propogate manifest parse errors instead of panicking...
r49165 use hg::errors::HgError;
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988 use hg::repo::Repo;
use hg::utils::current_dir;
use hg::utils::files::{get_bytes_from_path, relativize_path};
use hg::utils::hg_path::HgPath;
use hg::utils::hg_path::HgPathBuf;
use std::borrow::Cow;
Simon Sapin
rhg: refactor relativize_path into a struct + method...
r49284 pub struct RelativizePaths {
repo_root: HgPathBuf,
cwd: HgPathBuf,
outside_repo: bool,
}
impl RelativizePaths {
pub fn new(repo: &Repo) -> Result<Self, HgError> {
let cwd = current_dir()?;
let repo_root = repo.working_directory_path();
let repo_root = cwd.join(repo_root); // Make it absolute
let repo_root_hgpath =
Raphaël Gomès
rust: run `cargo clippy`...
r50809 HgPathBuf::from(get_bytes_from_path(&repo_root));
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988
Simon Sapin
rhg: refactor relativize_path into a struct + method...
r49284 if let Ok(cwd_relative_to_repo) = cwd.strip_prefix(&repo_root) {
// The current directory is inside the repo, so we can work with
// relative paths
Ok(Self {
repo_root: repo_root_hgpath,
cwd: HgPathBuf::from(get_bytes_from_path(
cwd_relative_to_repo,
)),
outside_repo: false,
})
} else {
Ok(Self {
repo_root: repo_root_hgpath,
cwd: HgPathBuf::from(get_bytes_from_path(cwd)),
outside_repo: true,
})
}
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988 }
Simon Sapin
rhg: refactor relativize_path into a struct + method...
r49284 pub fn relativize<'a>(&self, path: &'a HgPath) -> Cow<'a, [u8]> {
if self.outside_repo {
let joined = self.repo_root.join(path);
Cow::Owned(relativize_path(&joined, &self.cwd).into_owned())
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988 } else {
Simon Sapin
rhg: refactor relativize_path into a struct + method...
r49284 relativize_path(path, &self.cwd)
Pulkit Goyal
rhg: refactor function to relativize paths in utils...
r48988 }
}
}