D8088: rust-status: add missing variants to `Dispatch` enum
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Mon Feb 10 16:30:49 UTC 2020
Alphare updated this revision to Diff 20046.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8088?vs=19945&id=20046
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8088/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8088
AFFECTED FILES
rust/hg-core/src/dirstate/status.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/dirstate/status.rs b/rust/hg-core/src/dirstate/status.rs
--- a/rust/hg-core/src/dirstate/status.rs
+++ b/rust/hg-core/src/dirstate/status.rs
@@ -25,6 +25,25 @@
use std::fs::{read_dir, DirEntry};
use std::path::Path;
+/// Wrong type of file from a `BadMatch`
+/// Note: a lot of those don't exist on all platforms.
+#[derive(Debug)]
+pub enum BadType {
+ CharacterDevice,
+ BlockDevice,
+ FIFO,
+ Socket,
+ Directory,
+ Unknown,
+}
+
+/// Was explicitly matched but cannot be found/accessed
+#[derive(Debug)]
+pub enum BadMatch {
+ OsError(i32),
+ BadType(BadType),
+}
+
/// Marker enum used to dispatch new status entries into the right collections.
/// Is similar to `crate::EntryState`, but represents the transient state of
/// entries during the lifetime of a command.
@@ -36,6 +55,11 @@
Deleted,
Clean,
Unknown,
+ Ignored,
+ /// Empty dispatch, the file is not worth listing
+ None,
+ /// Was explicitly matched but cannot be found/accessed
+ Bad(BadMatch),
}
type IoResult<T> = std::io::Result<T>;
@@ -261,8 +285,9 @@
pub removed: Vec<&'a HgPath>,
pub deleted: Vec<&'a HgPath>,
pub clean: Vec<&'a HgPath>,
- /* TODO ignored
- * TODO unknown */
+ pub ignored: Vec<&'a HgPath>,
+ pub unknown: Vec<&'a HgPath>,
+ pub bad: Vec<(&'a HgPath, BadMatch)>,
}
fn build_response<'a>(
@@ -274,17 +299,23 @@
let mut removed = vec![];
let mut deleted = vec![];
let mut clean = vec![];
+ let mut ignored = vec![];
+ let mut unknown = vec![];
+ let mut bad = vec![];
for res in results.into_iter() {
let (filename, dispatch) = res?;
match dispatch {
- Dispatch::Unknown => {}
+ Dispatch::Unknown => unknown.push(filename),
Dispatch::Unsure => lookup.push(filename),
Dispatch::Modified => modified.push(filename),
Dispatch::Added => added.push(filename),
Dispatch::Removed => removed.push(filename),
Dispatch::Deleted => deleted.push(filename),
Dispatch::Clean => clean.push(filename),
+ Dispatch::Ignored => ignored.push(filename),
+ Dispatch::None => {}
+ Dispatch::Bad(reason) => bad.push((filename, reason)),
}
}
@@ -296,6 +327,9 @@
removed,
deleted,
clean,
+ ignored,
+ unknown,
+ bad,
},
))
}
To: Alphare, #hg-reviewers, kevincox
Cc: kevincox, mercurial-devel
More information about the Mercurial-devel
mailing list