--- a/rust/rhg/src/commands/files.rs Mon May 29 16:53:18 2023 +0100
+++ b/rust/rhg/src/commands/files.rs Mon May 29 17:04:14 2023 +0100
@@ -1,5 +1,7 @@
use crate::error::CommandError;
-use crate::ui::{print_narrow_sparse_warnings, Ui, RelativePaths, relative_paths};
+use crate::ui::{
+ print_narrow_sparse_warnings, relative_paths, RelativePaths, Ui,
+};
use crate::utils::path_utils::RelativizePaths;
use clap::Arg;
use hg::narrow;
@@ -28,14 +30,10 @@
}
pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> {
- match relative_paths(invocation.config)? {
- RelativePaths::Legacy | RelativePaths::Bool(true) => (),
- RelativePaths::Bool(false) => {
- return Err(CommandError::unsupported(
- "non-default ui.relative-paths",
- ));
- }
- }
+ let relative_paths = match relative_paths(invocation.config)? {
+ RelativePaths::Legacy => true,
+ RelativePaths::Bool(v) => v,
+ };
let rev = invocation.subcommand_args.get_one::<String>("rev");
@@ -59,7 +57,7 @@
if let Some(rev) = rev {
let files = list_rev_tracked_files(repo, rev, narrow_matcher)
.map_err(|e| (e, rev.as_ref()))?;
- display_files(invocation.ui, repo, files.iter())
+ display_files(invocation.ui, repo, relative_paths, files.iter())
} else {
// The dirstate always reflects the sparse narrowspec.
let dirstate = repo.dirstate_map()?;
@@ -79,6 +77,7 @@
display_files(
invocation.ui,
repo,
+ relative_paths,
files.into_iter().map::<Result<_, CommandError>, _>(Ok),
)
}
@@ -87,6 +86,7 @@
fn display_files<'a, E>(
ui: &Ui,
repo: &Repo,
+ relative_paths: bool,
files: impl IntoIterator<Item = Result<&'a HgPath, E>>,
) -> Result<(), CommandError>
where
@@ -98,7 +98,11 @@
let relativize = RelativizePaths::new(repo)?;
for result in files {
let path = result?;
- stdout.write_all(&relativize.relativize(path))?;
+ if relative_paths {
+ stdout.write_all(&relativize.relativize(path))?;
+ } else {
+ stdout.write_all(path.as_bytes())?;
+ }
stdout.write_all(b"\n")?;
any = true;
}
--- a/tests/test-rhg.t Mon May 29 16:53:18 2023 +0100
+++ b/tests/test-rhg.t Mon May 29 17:04:14 2023 +0100
@@ -77,8 +77,9 @@
../../../file3
$ $NO_FALLBACK rhg files --config ui.relative-paths=false
- unsupported feature: non-default ui.relative-paths
- [252]
+ file1
+ file2
+ file3
$ $NO_FALLBACK rhg files --config ui.relative-paths=true
../../../file1