)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000058,"name":"Jonas Chevalier","display_name":"zimbatm","email":"zimbatm@zimbatm.com","username":"zimbatm"},"change_message_id":"62ce19a0ae21670e9c2af5f45ff392c60f482a3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"6658fae1_c5a047c7","updated":"2023-10-14 19:47:55.000000000","message":"good stuff!","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"}],"tvix/castore/src/import.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":24,"context_line":"use walkdir::WalkDir;"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#[derive(Debug, thiserror::Error)]"},{"line_number":27,"context_line":"pub enum Error {"},{"line_number":28,"context_line":"    #[error(\"failed to upload directory at {0}: {1}\")]"},{"line_number":29,"context_line":"    UploadDirectoryError(PathBuf, CastoreError),"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"26facfe4_6a8b4f70","line":27,"updated":"2023-10-09 15:47:04.000000000","message":"Can you drop the error types that are not used anymore?","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"1e0a4a57acae3b0752c79353f158ed9dac844f76","unresolved":false,"context_lines":[{"line_number":24,"context_line":"use walkdir::WalkDir;"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#[derive(Debug, thiserror::Error)]"},{"line_number":27,"context_line":"pub enum Error {"},{"line_number":28,"context_line":"    #[error(\"failed to upload directory at {0}: {1}\")]"},{"line_number":29,"context_line":"    UploadDirectoryError(PathBuf, CastoreError),"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"b5cb14d1_ae30e814","line":27,"in_reply_to":"26facfe4_6a8b4f70","updated":"2023-10-09 17:21:33.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":189,"context_line":"    ingest_path(blob_service, directory_service, ingestion_entries_stream).await"},{"line_number":190,"context_line":"}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"/// Ingests contents into the tvix store, interacting with a"},{"line_number":193,"context_line":"/// [BlobService] and [DirectoryService]. It returns the node"},{"line_number":194,"context_line":"/// corresponding to the last entry in the stream, or an error."},{"line_number":195,"context_line":"///"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"d3532690_e1fed918","line":192,"updated":"2023-10-09 15:47:04.000000000","message":"There\u0027s not really one Tvix store, and this only interacts with blob and directory service.","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"1e0a4a57acae3b0752c79353f158ed9dac844f76","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    ingest_path(blob_service, directory_service, ingestion_entries_stream).await"},{"line_number":190,"context_line":"}"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"/// Ingests contents into the tvix store, interacting with a"},{"line_number":193,"context_line":"/// [BlobService] and [DirectoryService]. It returns the node"},{"line_number":194,"context_line":"/// corresponding to the last entry in the stream, or an error."},{"line_number":195,"context_line":"///"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"94896549_dbef669c","line":192,"in_reply_to":"d3532690_e1fed918","updated":"2023-10-09 17:21:33.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":195,"context_line":"///"},{"line_number":196,"context_line":"/// contents should be a stream, containing pairs of paths and"},{"line_number":197,"context_line":"/// IngestionEntry items. If the path being ingested is a directory,"},{"line_number":198,"context_line":"/// this should include all contents of the directory, recursively,"},{"line_number":199,"context_line":"/// and in a topological (deep-first) order. If it\u0027s a file or symlink,"},{"line_number":200,"context_line":"/// it should only contain the one entry."},{"line_number":201,"context_line":"///"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"a84c7f44_4d4413e8","line":198,"updated":"2023-10-09 15:47:04.000000000","message":"the stream should contain all contents of the directory before sending the directory itself","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"1e0a4a57acae3b0752c79353f158ed9dac844f76","unresolved":false,"context_lines":[{"line_number":195,"context_line":"///"},{"line_number":196,"context_line":"/// contents should be a stream, containing pairs of paths and"},{"line_number":197,"context_line":"/// IngestionEntry items. If the path being ingested is a directory,"},{"line_number":198,"context_line":"/// this should include all contents of the directory, recursively,"},{"line_number":199,"context_line":"/// and in a topological (deep-first) order. If it\u0027s a file or symlink,"},{"line_number":200,"context_line":"/// it should only contain the one entry."},{"line_number":201,"context_line":"///"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"65d0c549_290883f9","line":198,"in_reply_to":"a84c7f44_4d4413e8","updated":"2023-10-09 17:21:33.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":197,"context_line":"/// IngestionEntry items. If the path being ingested is a directory,"},{"line_number":198,"context_line":"/// this should include all contents of the directory, recursively,"},{"line_number":199,"context_line":"/// and in a topological (deep-first) order. If it\u0027s a file or symlink,"},{"line_number":200,"context_line":"/// it should only contain the one entry."},{"line_number":201,"context_line":"///"},{"line_number":202,"context_line":"/// It is expected that everything in contents is connected in some"},{"line_number":203,"context_line":"/// way to the last node in the stream. Ingesting disconnected graphs"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"92b7c98e_0abcd5ee","line":200,"updated":"2023-10-09 15:47:04.000000000","message":"the whole stream should only","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"1e0a4a57acae3b0752c79353f158ed9dac844f76","unresolved":false,"context_lines":[{"line_number":197,"context_line":"/// IngestionEntry items. If the path being ingested is a directory,"},{"line_number":198,"context_line":"/// this should include all contents of the directory, recursively,"},{"line_number":199,"context_line":"/// and in a topological (deep-first) order. If it\u0027s a file or symlink,"},{"line_number":200,"context_line":"/// it should only contain the one entry."},{"line_number":201,"context_line":"///"},{"line_number":202,"context_line":"/// It is expected that everything in contents is connected in some"},{"line_number":203,"context_line":"/// way to the last node in the stream. Ingesting disconnected graphs"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"455d14d2_e3ed65d8","line":200,"in_reply_to":"92b7c98e_0abcd5ee","updated":"2023-10-09 17:21:33.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    // TODO: validate that contents of a directory never come after the directory itself"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    // TODO: pass this one instead?"},{"line_number":223,"context_line":"    let mut directory_putter \u003d directory_service.put_multiple_start();"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"81a39a10_c7d09118","line":222,"updated":"2023-10-09 15:47:04.000000000","message":"Drop this TODO line, this was dropped in cl/9573.","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"1e0a4a57acae3b0752c79353f158ed9dac844f76","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    // TODO: validate that contents of a directory never come after the directory itself"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    // TODO: pass this one instead?"},{"line_number":223,"context_line":"    let mut directory_putter \u003d directory_service.put_multiple_start();"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"c141c6c6_beb9c7f0","line":222,"in_reply_to":"81a39a10_c7d09118","updated":"2023-10-09 17:21:33.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"3704709a3e77022919d74e597d8bb47382ed9a02","unresolved":true,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    tokio::pin!(contents);"},{"line_number":228,"context_line":"    while let Some(maybe_entry) \u003d contents.next().await {"},{"line_number":229,"context_line":"        let (path, entry) \u003d maybe_entry.map_err(Error::FromStream)?;"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"a5d31450_499ea1f0","line":227,"updated":"2023-10-09 15:47:04.000000000","message":"cc @raitobezarius","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"436859cac8051a7595fb51fd4c8702c860e58aed","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    tokio::pin!(contents);"},{"line_number":228,"context_line":"    while let Some(maybe_entry) \u003d contents.next().await {"},{"line_number":229,"context_line":"        let (path, entry) \u003d maybe_entry.map_err(Error::FromStream)?;"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"ecbf86c9_267963cc","line":227,"in_reply_to":"1227a6ac_549bc114","updated":"2023-10-16 09:15:20.000000000","message":"Done","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"fd7ae2a3da970ef1b81082b8186e0d031a713197","unresolved":true,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    tokio::pin!(contents);"},{"line_number":228,"context_line":"    while let Some(maybe_entry) \u003d contents.next().await {"},{"line_number":229,"context_line":"        let (path, entry) \u003d maybe_entry.map_err(Error::FromStream)?;"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"1227a6ac_549bc114","line":227,"in_reply_to":"a5d31450_499ea1f0","updated":"2023-10-15 11:07:46.000000000","message":"Hm… Sounds good. As long as `contents` is not naked somewhere else (i.e. unpinned), there\u0027s no problem. The good thing is that `contents` is not a reference, it\u0027s a move. As long as the implementation of the stream does","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"f573f3f86ad1b1780a145cf0c6b55fce27dbe07e","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    let mut last_node \u003d None;"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    tokio::pin!(contents);"},{"line_number":228,"context_line":"    while let Some(maybe_entry) \u003d contents.next().await {"},{"line_number":229,"context_line":"        let (path, entry) \u003d maybe_entry.map_err(Error::FromStream)?;"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":4,"id":"c24837c1_804733c6","line":227,"in_reply_to":"a5d31450_499ea1f0","updated":"2023-10-13 08:51:09.000000000","message":"I\u0027m fairly sure this is correct, we can fix it later if it isn\u0027t","commit_id":"5132653880888a3c89c5cc25818a1958e54b63f9"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"cc4e0eb3dc16764f428052b7bb0c9fffee15df9a","unresolved":true,"context_lines":[{"line_number":60,"context_line":"// this path needs to be passed in."},{"line_number":61,"context_line":"//"},{"line_number":62,"context_line":"// It assumes the caller adds returned nodes to the directories it assembles."},{"line_number":63,"context_line":"#[instrument(skip_all, fields(entry.file_type\u003d?\u0026entry.file_type(),entry.path\u003d?entry.path()))]"},{"line_number":64,"context_line":"async fn process_entry\u003c\u0027a\u003e("},{"line_number":65,"context_line":"    blob_service: Arc\u003cdyn BlobService\u003e,"},{"line_number":66,"context_line":"    directory_putter: \u0026\u0027a mut Box\u003cdyn DirectoryPutter\u003e,"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"1e497d31_04e1bcf7","side":"PARENT","line":63,"updated":"2023-10-14 19:39:25.000000000","message":"can we restore some of the fields?","commit_id":"b1ab8075cd70b66b98622f5dc1b1d04cb60c7f79"},{"author":{"_account_id":1000058,"name":"Jonas Chevalier","display_name":"zimbatm","email":"zimbatm@zimbatm.com","username":"zimbatm"},"change_message_id":"62ce19a0ae21670e9c2af5f45ff392c60f482a3f","unresolved":true,"context_lines":[{"line_number":76,"context_line":"    let name \u003d path"},{"line_number":77,"context_line":"        .as_ref()"},{"line_number":78,"context_line":"        .file_name()"},{"line_number":79,"context_line":"        .expect(\"Entry path {path:?} should have a file name\");"},{"line_number":80,"context_line":"    match entry {"},{"line_number":81,"context_line":"        IngestionEntry::Directory \u003d\u003e {"},{"line_number":82,"context_line":"            let directory \u003d maybe_directory"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"90e83a35_5dc99afe","line":79,"range":{"start_line":79,"start_character":17,"end_line":79,"end_character":27},"updated":"2023-10-14 19:47:55.000000000","message":"should Entry be lowercase?","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"ab9c537c3aca19b6d45e730e1b44dba0b544812b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    let name \u003d path"},{"line_number":77,"context_line":"        .as_ref()"},{"line_number":78,"context_line":"        .file_name()"},{"line_number":79,"context_line":"        .expect(\"Entry path {path:?} should have a file name\");"},{"line_number":80,"context_line":"    match entry {"},{"line_number":81,"context_line":"        IngestionEntry::Directory \u003d\u003e {"},{"line_number":82,"context_line":"            let directory \u003d maybe_directory"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"539c7e23_0a903709","line":79,"range":{"start_line":79,"start_character":17,"end_line":79,"end_character":27},"in_reply_to":"90e83a35_5dc99afe","updated":"2023-11-06 11:36:57.000000000","message":"Done","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000058,"name":"Jonas Chevalier","display_name":"zimbatm","email":"zimbatm@zimbatm.com","username":"zimbatm"},"change_message_id":"62ce19a0ae21670e9c2af5f45ff392c60f482a3f","unresolved":true,"context_lines":[{"line_number":90,"context_line":"                .await"},{"line_number":91,"context_line":"                .map_err(|e| Error::UploadDirectoryError(path.as_ref().to_path_buf(), e))?;"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            return Ok(Node::Directory(DirectoryNode {"},{"line_number":94,"context_line":"                name: name.as_bytes().to_owned().into(),"},{"line_number":95,"context_line":"                digest: directory_digest.into(),"},{"line_number":96,"context_line":"                size: directory_size,"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"f9954490_ad44cd18","line":93,"updated":"2023-10-14 19:47:55.000000000","message":"could be implicit return?","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"ab9c537c3aca19b6d45e730e1b44dba0b544812b","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                .await"},{"line_number":91,"context_line":"                .map_err(|e| Error::UploadDirectoryError(path.as_ref().to_path_buf(), e))?;"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"            return Ok(Node::Directory(DirectoryNode {"},{"line_number":94,"context_line":"                name: name.as_bytes().to_owned().into(),"},{"line_number":95,"context_line":"                digest: directory_digest.into(),"},{"line_number":96,"context_line":"                size: directory_size,"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"d1dcac74_f0c04959","line":93,"in_reply_to":"f9954490_ad44cd18","updated":"2023-11-06 11:36:57.000000000","message":"Done","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000058,"name":"Jonas Chevalier","display_name":"zimbatm","email":"zimbatm@zimbatm.com","username":"zimbatm"},"change_message_id":"62ce19a0ae21670e9c2af5f45ff392c60f482a3f","unresolved":true,"context_lines":[{"line_number":97,"context_line":"            }));"},{"line_number":98,"context_line":"        }"},{"line_number":99,"context_line":"        IngestionEntry::Symlink { target } \u003d\u003e {"},{"line_number":100,"context_line":"            return Ok(Node::Symlink(SymlinkNode {"},{"line_number":101,"context_line":"                name: name.as_bytes().to_owned().into(),"},{"line_number":102,"context_line":"                target: Bytes::from(target),"},{"line_number":103,"context_line":"            }));"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"c7419998_e6414a67","line":100,"updated":"2023-10-14 19:47:55.000000000","message":"\"","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000076,"name":"Linus Heckemann","email":"git@sphalerite.org","username":"lheckemann"},"change_message_id":"ab9c537c3aca19b6d45e730e1b44dba0b544812b","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            }));"},{"line_number":98,"context_line":"        }"},{"line_number":99,"context_line":"        IngestionEntry::Symlink { target } \u003d\u003e {"},{"line_number":100,"context_line":"            return Ok(Node::Symlink(SymlinkNode {"},{"line_number":101,"context_line":"                name: name.as_bytes().to_owned().into(),"},{"line_number":102,"context_line":"                target: Bytes::from(target),"},{"line_number":103,"context_line":"            }));"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"ec050602_dc73cceb","line":100,"in_reply_to":"c7419998_e6414a67","updated":"2023-11-06 11:36:57.000000000","message":"Done","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000058,"name":"Jonas Chevalier","display_name":"zimbatm","email":"zimbatm@zimbatm.com","username":"zimbatm"},"change_message_id":"62ce19a0ae21670e9c2af5f45ff392c60f482a3f","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                    .into_vec(),"},{"line_number":155,"context_line":"            }"},{"line_number":156,"context_line":"        } else {"},{"line_number":157,"context_line":"            todo!();"},{"line_number":158,"context_line":"        },"},{"line_number":159,"context_line":"    ))"},{"line_number":160,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"fd516cfb_cf56e09c","line":157,"range":{"start_line":157,"start_character":12,"end_line":157,"end_character":16},"updated":"2023-10-14 19:47:55.000000000","message":"this means that if there is a device or unix socket, it will panic? It could return an error instead maybe.","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"23aa7597c8a2e51dd8491b50645b0f99d74ec9cb","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                    .into_vec(),"},{"line_number":155,"context_line":"            }"},{"line_number":156,"context_line":"        } else {"},{"line_number":157,"context_line":"            todo!();"},{"line_number":158,"context_line":"        },"},{"line_number":159,"context_line":"    ))"},{"line_number":160,"context_line":"}"}],"source_content_type":"text/x-rustsrc","patch_set":7,"id":"3481ee9d_18fce28f","line":157,"range":{"start_line":157,"start_character":12,"end_line":157,"end_character":16},"in_reply_to":"fd516cfb_cf56e09c","updated":"2023-11-06 12:35:03.000000000","message":"I\u0027d return a `std::io::Error::new(std::io::ErrorKind::InvalidData, format!(\"encountered invalid entry at {}\", entry.path()))` or something like this.","commit_id":"a536a4743e74bd148f38ab4b1c2c97134840fcaf"}],"tvix/cli/src/tvix_store_io.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"96444fe578b977090e550df70e6333b1275484fb","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        let path_info_service \u003d self.path_info_service.clone();"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        let task \u003d self.tokio_handle.spawn(async move {"},{"line_number":273,"context_line":"            import_path_with_pathinfo(blob_service, directory_service, path_info_service, \u0026p).await"},{"line_number":274,"context_line":"        });"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        let path_info \u003d self.tokio_handle.block_on(task).unwrap()?;"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"1f2e5a0e_b6377ff6","line":273,"updated":"2023-10-10 06:39:01.000000000","message":"…called from here.","commit_id":"7b71b58ace927cf595c3c056c28b10359b76c18f"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"96444fe578b977090e550df70e6333b1275484fb","unresolved":false,"context_lines":[{"line_number":301,"context_line":"/// Imports a given path on the filesystem into the store, and returns the"},{"line_number":302,"context_line":"/// [PathInfo] describing the path, that was sent to"},{"line_number":303,"context_line":"/// [PathInfoService]."},{"line_number":304,"context_line":"#[instrument(skip(blob_service, directory_service, path_info_service), ret, err)]"},{"line_number":305,"context_line":"async fn import_path_with_pathinfo("},{"line_number":306,"context_line":"    blob_service: Arc\u003cdyn BlobService\u003e,"},{"line_number":307,"context_line":"    directory_service: Arc\u003cdyn DirectoryService\u003e,"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"8faa1fda_fadd6d6a","line":304,"updated":"2023-10-10 06:39:01.000000000","message":"Nothing for this CL, but this currently does not go through `std_io` (but I think it probably should), and then we\u0027ll have some interesting questions on whether `std_io` is currently the right abstraction.","commit_id":"7b71b58ace927cf595c3c056c28b10359b76c18f"}]}
