repo_init_and_open/
repo_init_and_open.rs1use grit_lib::repo::{init_repository, Repository};
6use std::fs;
7
8fn main() -> grit_lib::error::Result<()> {
9 let root = tempfile::tempdir()?;
10 let path = root.path();
11
12 let repo = init_repository(path, false, "main", None, "files")?;
13 println!("opened after init: git_dir = {}", repo.git_dir.display());
14 println!("work tree: {}", repo.work_tree.as_ref().unwrap().display());
15
16 let again = Repository::open(&repo.git_dir, repo.work_tree.as_deref())?;
17 println!("re-open by path: bare = {}", again.is_bare());
18
19 let marker = path.join("marker.txt");
20 fs::write(&marker, b"inside work tree\n")?;
21 let sub = path.join("subdir");
22 fs::create_dir_all(&sub)?;
23 assert!(std::env::set_current_dir(&sub).is_ok());
24 let discovered = Repository::discover(None)?;
25 println!(
26 "discover from subdir: same git_dir = {}",
27 discovered.git_dir == repo.git_dir
28 );
29
30 Ok(())
31}