Mercurial > public > mercurial-scm > hg-stable
comparison rust/hg-core/src/errors.rs @ 46544:f031fe1c6ede
rhg: Abort based on config on share-safe mismatch
Differential Revision: https://phab.mercurial-scm.org/D9963
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Thu, 04 Feb 2021 14:29:47 +0100 |
parents | 2845892dd489 |
children | bc08c2331f99 |
comparison
equal
deleted
inserted
replaced
46543:a6e4e4650bac | 46544:f031fe1c6ede |
---|---|
6 IoError { | 6 IoError { |
7 error: std::io::Error, | 7 error: std::io::Error, |
8 context: IoErrorContext, | 8 context: IoErrorContext, |
9 }, | 9 }, |
10 | 10 |
11 /// A file under `.hg/` normally only written by Mercurial | 11 /// A file under `.hg/` normally only written by Mercurial is not in the |
12 /// expected format. This indicates a bug in Mercurial, filesystem | |
13 /// corruption, or hardware failure. | |
12 /// | 14 /// |
13 /// The given string is a short explanation for users, not intended to be | 15 /// The given string is a short explanation for users, not intended to be |
14 /// machine-readable. | 16 /// machine-readable. |
15 CorruptedRepository(String), | 17 CorruptedRepository(String), |
16 | 18 |
19 /// implementation may or may not work. | 21 /// implementation may or may not work. |
20 /// | 22 /// |
21 /// The given string is a short explanation for users, not intended to be | 23 /// The given string is a short explanation for users, not intended to be |
22 /// machine-readable. | 24 /// machine-readable. |
23 UnsupportedFeature(String), | 25 UnsupportedFeature(String), |
26 | |
27 /// Operation cannot proceed for some other reason. | |
28 /// | |
29 /// The given string is a short explanation for users, not intended to be | |
30 /// machine-readable. | |
31 Abort(String), | |
24 } | 32 } |
25 | 33 |
26 /// Details about where an I/O error happened | 34 /// Details about where an I/O error happened |
27 #[derive(Debug, derive_more::From)] | 35 #[derive(Debug, derive_more::From)] |
28 pub enum IoErrorContext { | 36 pub enum IoErrorContext { |
44 } | 52 } |
45 | 53 |
46 pub fn unsupported(explanation: impl Into<String>) -> Self { | 54 pub fn unsupported(explanation: impl Into<String>) -> Self { |
47 HgError::UnsupportedFeature(explanation.into()) | 55 HgError::UnsupportedFeature(explanation.into()) |
48 } | 56 } |
57 pub fn abort(explanation: impl Into<String>) -> Self { | |
58 HgError::Abort(explanation.into()) | |
59 } | |
49 } | 60 } |
50 | 61 |
51 // TODO: use `DisplayBytes` instead to show non-Unicode filenames losslessly? | 62 // TODO: use `DisplayBytes` instead to show non-Unicode filenames losslessly? |
52 impl fmt::Display for HgError { | 63 impl fmt::Display for HgError { |
53 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | 64 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |
59 write!(f, "corrupted repository: {}", explanation) | 70 write!(f, "corrupted repository: {}", explanation) |
60 } | 71 } |
61 HgError::UnsupportedFeature(explanation) => { | 72 HgError::UnsupportedFeature(explanation) => { |
62 write!(f, "unsupported feature: {}", explanation) | 73 write!(f, "unsupported feature: {}", explanation) |
63 } | 74 } |
75 HgError::Abort(explanation) => explanation.fmt(f), | |
64 } | 76 } |
65 } | 77 } |
66 } | 78 } |
67 | 79 |
68 // TODO: use `DisplayBytes` instead to show non-Unicode filenames losslessly? | 80 // TODO: use `DisplayBytes` instead to show non-Unicode filenames losslessly? |