Mostly improving readability, and removed Repository::find_root_with_dot_dir() as it seemed unnecessarily specific.
QRFQ24WRFJN3W3SMXC2MHP6RSITUW6O2MHOE7R22RGXGK5XAPVVAC GKSVBEUW7Q2M4QPKPHOUPGP36AMXMJVGX7KCSNYXEFQZOURGBSMQC EFY2CITFEAIGNPBPNXY3RV4LONYYSXKBNWPVPHKTCHCFK2OBQ5AAC 4RV7T4SRYIQLBW3EZFWBO5G65QAVG2GHPI4KMDDZERCX65KQWSPQC CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC YN63NUZO4LVJ7XPMURDULTXBVJKW5MVCTZ24R7Z52QMHO3HPDUVQC L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC A3RM526Y7LUXNYW4TL56YKQ5GVOK2R5D7JJVTSQ6TT5MEXIR6YAAC JL4WKA5PBKXRNAMETYO4I52QKASQ3COYHH2JKGA7W5YLIRZZH53AC EUZFFJSOWV4PXDFFPDAFBHFUUMOFEU6ST7JH57YYRRR2SEOXLN6QC I24UEJQLCH2SOXA4UHIYWTRDCHSOPU7AFTRUOTX7HZIAV4AZKYEQC TYAKEAJLABCZQDYAI4YBGIJNQ7HJS4DVULEGPCZOGJPJUYYNR6TAC 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()?,
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));
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);
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);