Alphare created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches.
REVISION SUMMARY Turns out the necessary pieces were there already. Like the Python implementation, we default to the first parent of the dirstate. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D11377 AFFECTED FILES rust/rhg/src/commands/cat.rs tests/test-rhg.t CHANGE DETAILS diff --git a/tests/test-rhg.t b/tests/test-rhg.t --- a/tests/test-rhg.t +++ b/tests/test-rhg.t @@ -135,40 +135,65 @@ $ echo "original content" > original $ hg add original $ hg commit -m "add original" original +Without `--rev` + $ $NO_FALLBACK rhg cat original + original content +With `--rev` $ $NO_FALLBACK rhg cat -r 0 original original content Cat copied file should not display copy metadata $ hg copy original copy_of_original $ hg commit -m "add copy of original" + $ $NO_FALLBACK rhg cat original + original content $ $NO_FALLBACK rhg cat -r 1 copy_of_original original content + Fallback to Python - $ $NO_FALLBACK rhg cat original - unsupported feature: `rhg cat` without `--rev` / `-r` + $ $NO_FALLBACK rhg cat original --exclude="*.rs" + unsupported feature: error: Found argument '--exclude' which wasn't expected, or isn't valid in this context + + USAGE: + rhg cat [OPTIONS] <FILE>... + + For more information try --help + [252] - $ rhg cat original + $ rhg cat original --exclude="*.rs" original content $ FALLBACK_EXE="$RHG_FALLBACK_EXECUTABLE" $ unset RHG_FALLBACK_EXECUTABLE - $ rhg cat original + $ rhg cat original --exclude="*.rs" abort: 'rhg.on-unsupported=fallback' without 'rhg.fallback-executable' set. [255] $ RHG_FALLBACK_EXECUTABLE="$FALLBACK_EXE" $ export RHG_FALLBACK_EXECUTABLE - $ rhg cat original --config rhg.fallback-executable=false + $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=false [1] - $ rhg cat original --config rhg.fallback-executable=hg-non-existent + $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=hg-non-existent tried to fall back to a 'hg-non-existent' sub-process but got error $ENOENT$ - unsupported feature: `rhg cat` without `--rev` / `-r` + unsupported feature: error: Found argument '--exclude' which wasn't expected, or isn't valid in this context + + USAGE: + rhg cat [OPTIONS] <FILE>... + + For more information try --help + [252] - $ rhg cat original --config rhg.fallback-executable=rhg + $ rhg cat original --exclude="*.rs" --config rhg.fallback-executable=rhg Blocking recursive fallback. The 'rhg.fallback-executable = rhg' config points to `rhg` itself. - unsupported feature: `rhg cat` without `--rev` / `-r` + unsupported feature: error: Found argument '--exclude' which wasn't expected, or isn't valid in this context + + USAGE: + rhg cat [OPTIONS] <FILE>... + + For more information try --help + [252] Requirements diff --git a/rust/rhg/src/commands/cat.rs b/rust/rhg/src/commands/cat.rs --- a/rust/rhg/src/commands/cat.rs +++ b/rust/rhg/src/commands/cat.rs @@ -56,29 +56,28 @@ .map_err(|e| CommandError::abort(e.to_string()))?; files.push(hg_file); } + // TODO probably move this to a util function like `repo.default_rev` or + // something when it's used somewhere else + let rev = match rev { + Some(r) => r.to_string(), + None => format!("{:x}", repo.dirstate_parents()?.p1), + }; - match rev { - Some(rev) => { - let output = cat(&repo, rev, &files).map_err(|e| (e, rev))?; - invocation.ui.write_stdout(&output.concatenated)?; - if !output.missing.is_empty() { - let short = format!("{:x}", output.node.short()).into_bytes(); - for path in &output.missing { - invocation.ui.write_stderr(&format_bytes!( - b"{}: no such file in rev {}\n", - path.as_bytes(), - short - ))?; - } - } - if output.found_any { - Ok(()) - } else { - Err(CommandError::Unsuccessful) - } + let output = cat(&repo, &rev, &files).map_err(|e| (e, rev.as_str()))?; + invocation.ui.write_stdout(&output.concatenated)?; + if !output.missing.is_empty() { + let short = format!("{:x}", output.node.short()).into_bytes(); + for path in &output.missing { + invocation.ui.write_stderr(&format_bytes!( + b"{}: no such file in rev {}\n", + path.as_bytes(), + short + ))?; } - None => Err(CommandError::unsupported( - "`rhg cat` without `--rev` / `-r`", - )), + } + if output.found_any { + Ok(()) + } else { + Err(CommandError::Unsuccessful) } } To: Alphare, #hg-reviewers Cc: mercurial-patches, mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel