49 return Err(CommandError::unsupported( |
49 return Err(CommandError::unsupported( |
50 "repo is using sparse, but sparse extension is not enabled", |
50 "repo is using sparse, but sparse extension is not enabled", |
51 )); |
51 )); |
52 } |
52 } |
53 |
53 |
|
54 let (narrow_matcher, narrow_warnings) = narrow::matcher(repo)?; |
|
55 print_narrow_sparse_warnings(&narrow_warnings, &[], invocation.ui, repo)?; |
|
56 |
54 if let Some(rev) = rev { |
57 if let Some(rev) = rev { |
55 if repo.has_narrow() { |
58 let files = list_rev_tracked_files(repo, rev, narrow_matcher) |
56 return Err(CommandError::unsupported( |
|
57 "rhg files -r <rev> is not supported in narrow clones", |
|
58 )); |
|
59 } |
|
60 let files = list_rev_tracked_files(repo, rev) |
|
61 .map_err(|e| (e, rev.as_ref()))?; |
59 .map_err(|e| (e, rev.as_ref()))?; |
62 display_files(invocation.ui, repo, files.iter()) |
60 display_files(invocation.ui, repo, files.iter()) |
63 } else { |
61 } else { |
64 // The dirstate always reflects the sparse narrowspec. |
62 // The dirstate always reflects the sparse narrowspec. |
65 let (narrow_matcher, narrow_warnings) = narrow::matcher(repo)?; |
|
66 print_narrow_sparse_warnings( |
|
67 &narrow_warnings, |
|
68 &[], |
|
69 invocation.ui, |
|
70 repo, |
|
71 )?; |
|
72 let dirstate = repo.dirstate_map()?; |
63 let dirstate = repo.dirstate_map()?; |
73 let files_res: Result<Vec<_>, _> = |
64 let files_res: Result<Vec<_>, _> = |
74 filter_map_results(dirstate.iter(), |(path, entry)| { |
65 filter_map_results(dirstate.iter(), |(path, entry)| { |
75 Ok(if entry.tracked() && narrow_matcher.matches(path) { |
66 Ok(if entry.tracked() && narrow_matcher.matches(path) { |
76 Some(path) |
67 Some(path) |