Open a repository, optionally at a specific path. If `path` is provided, opens the repository at that path. If `path` is `None`, searches upward from the current directory. # Arguments `path` - Optional path to the repository # Returns An open [`Repository`] handle. # Errors Returns an error if no repository is found or if the repository cannot be opened. # Example ```rust,ignore // Open
(path: Option<&Path>)
| 331 | /// let repo = open_repository(Some(Path::new("/home/user/project")))?; |
| 332 | /// ``` |
| 333 | pub fn open_repository(path: Option<&Path>) -> CliResult<Repository> { |
| 334 | let repo_path = match path { |
| 335 | Some(p) => { |
| 336 | // If a path is provided, check if it's a repository or search from there |
| 337 | let dot_dir = p.join(DOT_DIR); |
| 338 | if dot_dir.is_dir() { |
| 339 | p.to_path_buf() |
| 340 | } else { |
| 341 | find_repository_root_from(p)? |
| 342 | } |
| 343 | } |
| 344 | None => find_repository_root()?, |
| 345 | }; |
| 346 | |
| 347 | Repository::open(&repo_path).map_err(CliError::from) |
| 348 | } |
| 349 | |
| 350 | /// Open a repository or return a user-friendly error. |
| 351 | /// |
no test coverage detected