Show More
@@ -43,6 +43,22 b" pub struct Vfs<'a> {" | |||
|
43 | 43 | } |
|
44 | 44 | |
|
45 | 45 | impl Repo { |
|
46 | /// tries to find nearest repository root in current working directory or | |
|
47 | /// its ancestors | |
|
48 | pub fn find_repo_root() -> Result<PathBuf, RepoError> { | |
|
49 | let current_directory = crate::utils::current_dir()?; | |
|
50 | // ancestors() is inclusive: it first yields `current_directory` | |
|
51 | // as-is. | |
|
52 | for ancestor in current_directory.ancestors() { | |
|
53 | if ancestor.join(".hg").is_dir() { | |
|
54 | return Ok(ancestor.to_path_buf()); | |
|
55 | } | |
|
56 | } | |
|
57 | return Err(RepoError::NotFound { | |
|
58 | at: current_directory, | |
|
59 | }); | |
|
60 | } | |
|
61 | ||
|
46 | 62 | /// Find a repository, either at the given path (which must contain a `.hg` |
|
47 | 63 | /// sub-directory) or by searching the current directory and its |
|
48 | 64 | /// ancestors. |
@@ -66,17 +82,8 b' impl Repo {' | |||
|
66 | 82 | }) |
|
67 | 83 | } |
|
68 | 84 | } else { |
|
69 | let current_directory = crate::utils::current_dir()?; | |
|
70 | // ancestors() is inclusive: it first yields `current_directory` | |
|
71 | // as-is. | |
|
72 | for ancestor in current_directory.ancestors() { | |
|
73 | if ancestor.join(".hg").is_dir() { | |
|
74 | return Self::new_at_path(ancestor.to_owned(), config); | |
|
75 | } | |
|
76 | } | |
|
77 | Err(RepoError::NotFound { | |
|
78 | at: current_directory, | |
|
79 | }) | |
|
85 | let root = Self::find_repo_root()?; | |
|
86 | Self::new_at_path(root, config) | |
|
80 | 87 | } |
|
81 | 88 | } |
|
82 | 89 |
@@ -174,9 +174,8 b' fn main() {' | |||
|
174 | 174 | } else { |
|
175 | 175 | let local_config = { |
|
176 | 176 | if std::env::var_os("HGRCSKIPREPO").is_none() { |
|
177 | let current_dir = hg::utils::current_dir(); | |
|
178 | // TODO: handle errors from current_dir | |
|
179 | if let Ok(current_dir_path) = current_dir { | |
|
177 | // TODO: handle errors from find_repo_root | |
|
178 | if let Ok(current_dir_path) = Repo::find_repo_root() { | |
|
180 | 179 | let config_files = vec![ |
|
181 | 180 | ConfigSource::AbsPath( |
|
182 | 181 | current_dir_path.join(".hg/hgrc"), |
General Comments 0
You need to be logged in to leave comments.
Login now