rust/rhg/src/commands/files.rs
changeset 49985 e57f76c28f7b
parent 49984 df9eabc9837b
child 50536 74e4dbb0fcd5
equal deleted inserted replaced
49984:df9eabc9837b 49985:e57f76c28f7b
    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)