3J6IK4W2BA4RJJQYXZOQFU4AQ3WJIM3TUXUNNBIQ6M6TS2JSHT6QC CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC AFWNXPBKW3PMUK5WRKRS7Z7F5Y7SUPZCJEVXXIUNXJLV4BPSCCBQC 4OCC6D42GZYRDLH3NSKXMJTRKXP7UZ6Z3YNGCNUT7NT6WBDBCBIAC SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC ZHABNS3S6FSINO74FOI5KHYXYDTBPO4FQTTYTUS7NNKEVVNLYC4AC OJZWJUF2TCGZ7RFVY6FPKBS5P3C4BGHZDPVH775OHVNVFMJICKNQC XTMYHJZLWWT5I2PJAL7PCNA3V6LL6C45WOZG7THFLIC736AQYDUQC 4VWXL6KQGYGDUQRCVJCEVIV6CKJSEIYDX4YF33OX6EDNKJNEGD2AC if let Ok(meta) = meta {if meta.is_dir() {let mut walk = WalkBuilder::new(&full);walk.ignore(true).git_ignore(true).filter_entry(|p| p.file_name() != crate::DOT_DIR).threads(threads - 1);walk.build_parallel().run(|| {Box::new(|entry| {let entry: ignore::DirEntry = if let Ok(entry) = entry {entry} else {return ignore::WalkState::Quit;};let p = entry.path();if let Some(p) = p.file_name() {if let Some(p) = p.to_str() {if p.ends_with("~") || (p.starts_with("#") && p.ends_with("#")){return ignore::WalkState::Skip;}
if meta.is_dir() {let mut walk = WalkBuilder::new(&full);walk.ignore(true).git_ignore(true).filter_entry(|p| {debug!("p.file_name = {:?}", p.file_name());p.file_name() != crate::DOT_DIR}).threads(threads - 1);walk.build_parallel().run(|| {Box::new(|entry| {let entry: ignore::DirEntry = if let Ok(entry) = entry {entry} else {return ignore::WalkState::Quit;};let p = entry.path();if let Some(p) = p.file_name() {if let Some(p) = p.to_str() {if p.ends_with("~") || (p.starts_with("#") && p.ends_with("#")){return ignore::WalkState::Skip;
debug!("entry path = {:?} {:?}", entry.path(), repo_path);if let Ok(entry_path) = CanonicalPathBuf::canonicalize(entry.path()) {if let Ok(path) = entry_path.as_path().strip_prefix(&repo_path) {let is_dir = entry.file_type().unwrap().is_dir();if sender.send((path.to_path_buf(), is_dir)).is_err() {return ignore::WalkState::Quit;}} else {debug!("entry = {:?}", entry.path());
}debug!("entry path = {:?} {:?}", entry.path(), repo_path);if let Ok(entry_path) = CanonicalPathBuf::canonicalize(entry.path()) {if let Ok(path) = entry_path.as_path().strip_prefix(&repo_path) {let is_dir = entry.file_type().unwrap().is_dir();if sender.send((path.to_path_buf(), is_dir)).is_err() {return ignore::WalkState::Quit;
} else if let Ok(path) = full.as_path().strip_prefix(&repo_path.as_path()) {sender.send((path.to_path_buf(), false)).unwrap();}
})} else {debug!("filter_ignore ok");let path = full.as_path().strip_prefix(&repo_path.as_path()).unwrap();sender.send((path.to_path_buf(), false)).unwrap();