diff --git a/src/base.rs b/src/base.rs index f540be9..1e44efb 100644 --- a/src/base.rs +++ b/src/base.rs @@ -64,6 +64,11 @@ pub fn read_tree(oid: String) { pub fn commit(message: &str) -> String { let mut commit = format!("tree {}\n", write_tree(".".to_owned())); + + if let Ok(head) = data::get_head() { + commit += format!("parent {}\n", head).as_str(); + } + commit += "\n"; commit += format!("{}\n", message).as_str(); diff --git a/src/data.rs b/src/data.rs index 336e9a3..e520303 100644 --- a/src/data.rs +++ b/src/data.rs @@ -45,3 +45,8 @@ pub fn get_object(hash: String, expected: String) -> String { pub fn set_head(oid: String) { fs::write(format!("{}/HEAD", RGIT_DIR), oid).expect("Failed to updated HEAD"); } + +pub fn get_head() -> Result> { + let oid = fs::read_to_string(format!("{}/HEAD", RGIT_DIR))?; + return Ok(oid); +}