Refactor style of `pijul_repository::Repository::find_root()`
Dependencies
- [2]
GKSVBEUWRefactor Repository constructors to take Option<&Path> instead of Option<PathBuf> - [3]
EFY2CITFMake `pijul_repository::max_files()` infallible - [4]
BZSC7VMYaddress clippy lints - [5]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [6]
Q7CHNDXNInit repo with default .ignore file - [7]
TYAKEAJLA better estimate of the maximum number of open patches we can keep (Unix-only at the moment) - [8]
4RV7T4SRMigrate from `pijul::config` to `pijul-config` - [9]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [10]
DDJO7X2PRemove dependency on `num_cpus` - [11]
JL4WKA5PImplement the Sanakirja concurrency model in a cross-process way - [12]
5OGOE4VWStore the current channel in the pristine - [13]
L4JXJHWXpijul/*: reorganize imports and remove extern crate - [14]
I24UEJQLVarious post-fire fixes - [15]
GYGLQPVXMigrate from `pijul::current_dir` to `std::env::current_dir` - [16]
H72JG6HLInit feature; specific .ignore configs - [17]
EUZFFJSOUpdating Pijul with the latest changes in Libpijul - [18]
YN63NUZOSanakirja 1.0 - [19]
A3RM526YIntegrating identity malleability
Change contents
- replacement in pijul-repository/src/lib.rs at line 7
use anyhow::bail;use anyhow::{anyhow, bail}; - replacement in pijul-repository/src/lib.rs at line 58[4.22013]→[2.56:145](∅→∅),[2.145]→[4.22375:22422](∅→∅),[4.22375]→[4.22375:22422](∅→∅),[4.22422]→[2.146:176](∅→∅),[2.176]→[4.22438:22482](∅→∅),[4.22438]→[4.22438:22482](∅→∅)
fn find_root_(cur: Option<&Path>, dot_dir: &str) -> Result<PathBuf, anyhow::Error> {let mut cur = if let Some(cur) = cur {cur.to_path_buf()} else {current_dir()?fn find_repository_root(directory_override: Option<&Path>,dot_dir: &str,) -> Result<(PathBuf, PathBuf), anyhow::Error> {let starting_directory = match directory_override {Some(starting_directory) => starting_directory.to_path_buf(),None => std::env::current_dir()?, - replacement in pijul-repository/src/lib.rs at line 66[4.22493]→[4.22493:22740](∅→∅),[4.22740]→[4.7720:7775](∅→∅),[4.7775]→[4.22798:22860](∅→∅),[4.22798]→[4.22798:22860](∅→∅)
cur.push(dot_dir);loop {debug!("{:?}", cur);if std::fs::metadata(&cur).is_err() {cur.pop();if cur.pop() {cur.push(DOT_DIR);} else {bail!("No Pijul repository found")}} else {break;let mut current_directory = starting_directory.as_path();while let Some(parent) = current_directory.parent() {let candidate_path = current_directory.join(dot_dir);debug!("Checking if `{candidate_path:?}` exists");if candidate_path.exists() && candidate_path.is_dir() {return Ok((current_directory.to_path_buf(), candidate_path)); - edit in pijul-repository/src/lib.rs at line 75
current_directory = parent; - replacement in pijul-repository/src/lib.rs at line 78
Ok(cur)Err(anyhow!("No Pijul repository found, starting from `{starting_directory:?}`")) - replacement in pijul-repository/src/lib.rs at line 85[2.251]→[4.76:127](∅→∅),[4.76]→[4.76:127](∅→∅),[4.127]→[4.23034:23040](∅→∅),[4.1067]→[4.23034:23040](∅→∅),[4.5810]→[4.23034:23040](∅→∅),[4.23034]→[4.23034:23040](∅→∅)
Self::find_root_with_dot_dir(cur, DOT_DIR)}let (working_copy_directory, dot_directory) = Self::find_repository_root(cur, DOT_DIR)?;let pristine_dir = dot_directory.join(PRISTINE_DIR);let changes_dir = dot_directory.join(CHANGES_DIR);let config_path = dot_directory.join(CONFIG_FILE); - edit in pijul-repository/src/lib.rs at line 90[4.23041]→[4.128:163](∅→∅),[4.163]→[2.252:280](∅→∅),[2.280]→[4.23106:23129](∅→∅),[4.23106]→[4.23106:23129](∅→∅),[4.1303]→[4.23129:23219](∅→∅),[4.23129]→[4.23129:23219](∅→∅),[4.23219]→[2.281:435](∅→∅),[2.435]→[4.23466:23515](∅→∅),[4.23466]→[4.23466:23515](∅→∅)
pub fn find_root_with_dot_dir(cur: Option<&Path>,dot_dir: &str,) -> Result<Self, anyhow::Error> {let cur = Self::find_root_(cur, dot_dir)?;let pristine_dir = cur.join(PRISTINE_DIR);let changes_dir = cur.join(CHANGES_DIR);let working_copy_dir = cur.parent().unwrap();let config_path = cur.join(CONFIG_FILE); - replacement in pijul-repository/src/lib.rs at line 99
Ok(Repository {Ok(Self { - replacement in pijul-repository/src/lib.rs at line 103
&working_copy_dir,&working_copy_directory, - replacement in pijul-repository/src/lib.rs at line 106
&working_copy_dir,&working_copy_directory, - replacement in pijul-repository/src/lib.rs at line 110
path: working_copy_dir.to_path_buf(),path: working_copy_directory,