B:BD[
3.70] → [
4.4495:4688]
B:BD[
4.4688] → [
2.1162:1173]
∅:D[
2.1173] → [
4.4688:4996]
B:BD[
4.4688] → [
4.4688:4996]
    let result = working_copy.record_prefixes(
        txn.clone(),
        channel.clone(),
        changes,
        &mut state,
        repo_path.clone(),
        prefixes,
        num_cpus,
        0,
    );
    use libpijul::working_copy::filesystem::*;
    match result {
        Ok(_) => {}
        Err(Error::Add(AddError::Fs(FsError::NotFound(_)))) => {}
        Err(Error::Add(AddError::Fs(FsError::AlreadyInRepo(_)))) => {}
        Err(e) => {
            error!("While adding {:?}: {}", prefixes, e);
    for p in prefixes.iter() {
        use libpijul::working_copy::filesystem::*;
        match working_copy.record_prefix(
            txn.clone(),
            channel.clone(),
            changes,
            &mut state,
            repo_path.clone(),
            p,
            num_cpus,
            0,
        ) {
            Ok(_) => {}
            Err(Error::Add(AddError::Fs(FsError::NotFound(_)))) => {}
            Err(Error::Add(AddError::Fs(FsError::AlreadyInRepo(_)))) => {}
            Err(Error::Add(AddError::Io(e))) if e.kind() == std::io::ErrorKind::NotFound => {}
            Err(e) => {
                error!("While adding {:?}: {}", prefixes, e);
            }
        }
    }
    if prefixes.is_empty() {
        use libpijul::working_copy::filesystem::*;
        match working_copy.record_prefix(
            txn.clone(),
            channel.clone(),
            changes,
            &mut state,
            repo_path.clone(),
            Path::new(""),
            num_cpus,
            0,
        ) {
            Ok(_) => {}
            Err(Error::Add(AddError::Fs(FsError::NotFound(_)))) => {}
            Err(Error::Add(AddError::Fs(FsError::AlreadyInRepo(_)))) => {}
            Err(Error::Add(AddError::Io(e))) if e.kind() == std::io::ErrorKind::NotFound => {}
            Err(e) => {
                error!("While adding {:?}: {}", prefixes, e);
            }