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();