rhg: raise wdir specific error for `hg debugdata`
Helps remove the conditional in `test-debugcommands.t` for rhg.
Differential Revision: https://phab.mercurial-scm.org/D10254
--- a/rust/hg-core/src/revlog.rs Sat Mar 20 02:03:57 2021 +0530
+++ b/rust/hg-core/src/revlog.rs Tue Mar 23 19:58:49 2021 +0530
@@ -35,6 +35,9 @@
#[allow(clippy::unreadable_literal)]
pub const WORKING_DIRECTORY_REVISION: Revision = 0x7fffffff;
+pub const WORKING_DIRECTORY_HEX: &str =
+ "ffffffffffffffffffffffffffffffffffffffff";
+
/// The simplest expression of what we need of Mercurial DAGs.
pub trait Graph {
/// Return the two parents of the given `Revision`.
--- a/rust/hg-core/src/revlog/revlog.rs Sat Mar 20 02:03:57 2021 +0530
+++ b/rust/hg-core/src/revlog/revlog.rs Tue Mar 23 19:58:49 2021 +0530
@@ -23,6 +23,8 @@
#[derive(derive_more::From)]
pub enum RevlogError {
InvalidRevision,
+ /// Working directory is not supported
+ WDirUnsupported,
/// Found more than one entry whose ID match the requested prefix
AmbiguousPrefix,
#[from]
--- a/rust/hg-core/src/revset.rs Sat Mar 20 02:03:57 2021 +0530
+++ b/rust/hg-core/src/revset.rs Tue Mar 23 19:58:49 2021 +0530
@@ -7,7 +7,8 @@
use crate::revlog::changelog::Changelog;
use crate::revlog::revlog::{Revlog, RevlogError};
use crate::revlog::NodePrefix;
-use crate::revlog::{Revision, NULL_REVISION};
+use crate::revlog::{Revision, NULL_REVISION, WORKING_DIRECTORY_HEX};
+use crate::Node;
/// Resolve a query string into a single revision.
///
@@ -51,6 +52,10 @@
}
}
if let Ok(prefix) = NodePrefix::from_hex(input) {
+ if prefix.is_prefix_of(&Node::from_hex(WORKING_DIRECTORY_HEX).unwrap())
+ {
+ return Err(RevlogError::WDirUnsupported);
+ }
return revlog.get_node_rev(prefix);
}
Err(RevlogError::InvalidRevision)
--- a/rust/rhg/src/error.rs Sat Mar 20 02:03:57 2021 +0530
+++ b/rust/rhg/src/error.rs Tue Mar 23 19:58:49 2021 +0530
@@ -157,6 +157,9 @@
impl From<(RevlogError, &str)> for CommandError {
fn from((err, rev): (RevlogError, &str)) -> CommandError {
match err {
+ RevlogError::WDirUnsupported => CommandError::abort(
+ "abort: working directory revision cannot be specified",
+ ),
RevlogError::InvalidRevision => CommandError::abort(format!(
"abort: invalid revision identifier: {}",
rev
--- a/tests/test-debugcommands.t Sat Mar 20 02:03:57 2021 +0530
+++ b/tests/test-debugcommands.t Tue Mar 23 19:58:49 2021 +0530
@@ -531,17 +531,9 @@
Test WdirUnsupported exception
-#if no-rhg
$ hg debugdata -c ffffffffffffffffffffffffffffffffffffffff
abort: working directory revision cannot be specified
[255]
-#else
-TODO: add rhg support for (at least parsing) the working directory pseudo-changeset
- $ hg debugdata -c ffffffffffffffffffffffffffffffffffffffff
- abort: working directory revision cannot be specified (missing-correct-output !)
- abort: invalid revision identifier: ffffffffffffffffffffffffffffffffffffffff (known-bad-output !)
- [255]
-#endif
Test cache warming command