sandbox

14 commits
Updated 2026-04-25 12:39:37
src
src/plop.rs
// use jj_lib::{
//     backend::{Backend, BackendLoadError, TreeValue},
//     config::StackedConfig,
//     default_index::DefaultIndexStore,
//     default_submodule_store::DefaultSubmoduleStore,
//     git_backend::GitBackend,
//     ref_name::WorkspaceName,
//     repo::{Repo, RepoLoader, StoreFactories},
//     repo_path::{RepoPath, RepoPathBuf},
//     revset::{RevsetExpression, RevsetIteratorExt},
//     settings::UserSettings,
//     simple_op_heads_store::SimpleOpHeadsStore,
//     simple_op_store::SimpleOpStore,
// };
// use tokio::io::AsyncReadExt;

// use std::{path::Path, sync::Arc};

// fn main() {
//     let mut store_factories = StoreFactories::empty();
//     store_factories.add_backend(
//         "git",
//         Box::new(|a, b| {
//             GitBackend::load(a, b)
//                 .map(|git| Box::new(git) as Box<dyn Backend>)
//                 .map_err(|e| BackendLoadError(Box::new(*e)))
//         }),
//     );
//     store_factories.add_op_store(
//         "simple_op_store",
//         Box::new(|_, b, c| Ok(Box::new(SimpleOpStore::load(b, c)))),
//     );
//     store_factories.add_op_heads_store(
//         "simple_op_heads_store",
//         Box::new(|_, b| Ok(Box::new(SimpleOpHeadsStore::load(b)))),
//     );
//     store_factories.add_index_store(
//         "default",
//         Box::new(|_, b| Ok(Box::new(DefaultIndexStore::load(b)))),
//     );
//     store_factories.add_submodule_store(
//         "default",
//         Box::new(|_, b| Ok(Box::new(DefaultSubmoduleStore::load(b)))),
//     );
//     let repo_path = Path::new("/home/jj/sandbox/.jj/repo");
//     let config = StackedConfig::with_defaults();
//     let settings = UserSettings::from_config(config).unwrap();
//     let repo = RepoLoader::init_from_file_system(&settings, repo_path, &store_factories)
//         .unwrap()
//         .load_at_head()
//         .unwrap();

//     let expression = Arc::new(RevsetExpression::All);
//     let revset = expression.evaluate(repo.as_ref() as &dyn Repo).unwrap();

//     let last_commit = revset
//         .iter()
//         .commits(repo.store())
//         .next()
//         .unwrap()
//         .unwrap()
//         .tree();

//     let p: RepoPathBuf =
//         RepoPathBuf::parse_fs_path(Path::new("/home/jj/"), Path::new("/"), "sandbox/.jj/repo")
//             .unwrap();

//     println!("{p:?}");

//     for (path, value) in last_commit.entries() {
//         println!(
//             "parent of the file: {:?} - file name: {:?}",
//             path.parent(),
//             path
//         );

//         for value in value.unwrap() {
//             match value {
//                 Some(TreeValue::File { id, .. }) => {
//                     let mut content =
//                         pollster::block_on(repo.store().read_file(&path, &id)).unwrap();
//                     let mut c = String::new();
//                     pollster::block_on(content.read_to_string(&mut c)).unwrap();
//                     println!("ontent of the file: {c}")
//                 }
//                 _ => {}
//             }
//         }
//     }
// }

// async fn test() {
//     struct Test {}
//     impl Test {
//         async fn compute(&mut self, input: u32) -> u32 {
//             input + 1
//         }
//     }

//     let mut tests = [Test {}, Test {}, Test {}];

//     let mut futures: [_; 3] = [const { core::mem::MaybeUninit::uninit() }; 3];

//     for (i, t) in tests.iter_mut().enumerate() {
//         futures[i].write(t.compute(32 * (i as u32)));
//     }

//     let futures = futures
//         .iter()
//         .map(|fut| (false, false, unsafe { fut.assume_init_read() }));

//     core::future::poll_fn(|cx| {
//         for (done, mut out, fut) in futures {
//             let mut pin = core::pin::pin!(fut);
//             if let core::task::Poll::Ready(v) = pin.poll(cx) {
//                 out.write(v);
//             }
//         }

//         core::task::Poll::<()>::Pending
//     })
//     .await;

//     /*
//     for (done, fut) in futures {
//         let mut pin = core::pin::pin!(fut);
//         core::future::poll_fn(|cx| pin.as_mut().poll(cx)).await;
//     }

//        let mut pinneds = storage
//            .iter_mut()
//            .map(|fut| unsafe { core::pin::Pin::new_unchecked(fut.assume_init_mut()) });

//        for fut in &mut storage {
//            let fut = unsafe { fut.assume_init_mut() };
//            let a = unsafe { core::pin::Pin::new_unchecked(fut) };
//        }
//     */
// }