diff --git a/src/base.rs b/src/base.rs index 684d202..5bbf018 100644 --- a/src/base.rs +++ b/src/base.rs @@ -71,7 +71,7 @@ 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() { + if let Ok(head) = data::get_ref("HEAD".to_owned()) { commit += format!("parent {}\n", head).as_str(); } @@ -79,7 +79,7 @@ pub fn commit(message: &str) -> String { commit += format!("{}\n", message).as_str(); let oid = data::hash_object(&commit.into_bytes(), "commit".to_owned()); - data::set_head(oid.clone()); + data::update_ref("HEAD".to_owned(), oid.clone()); return oid; } @@ -112,7 +112,7 @@ pub fn get_commit(oid: String) -> Commit { pub fn checkout(oid: String) { let commit = get_commit(oid.clone()); read_tree(commit.tree); - data::set_head(oid); + data::update_ref("HEAD".to_owned(), oid); } pub fn create_tag(name: String, oid: String) { diff --git a/src/data.rs b/src/data.rs index e520303..a2aba4e 100644 --- a/src/data.rs +++ b/src/data.rs @@ -42,11 +42,11 @@ pub fn get_object(hash: String, expected: String) -> String { return data; } -pub fn set_head(oid: String) { - fs::write(format!("{}/HEAD", RGIT_DIR), oid).expect("Failed to updated HEAD"); +pub fn update_ref(reference: String, oid: String) { + fs::write(format!("{}/{}", RGIT_DIR, reference), oid).expect("Failed to updated HEAD"); } -pub fn get_head() -> Result> { - let oid = fs::read_to_string(format!("{}/HEAD", RGIT_DIR))?; +pub fn get_ref(reference: String) -> Result> { + let oid = fs::read_to_string(format!("{}/{}", RGIT_DIR, reference))?; return Ok(oid); } diff --git a/src/main.rs b/src/main.rs index 9fb7278..c41602e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -119,7 +119,7 @@ fn log_commits(matches: ArgMatches) { let provided_oid = cmd_matches.value_of("oid").unwrap_or(""); let mut oid; if provided_oid == "" { - oid = data::get_head().expect("Cannot read HEAD file"); + oid = data::get_ref("HEAD".to_owned()).expect("Cannot read HEAD file"); } else { oid = provided_oid.to_owned(); } @@ -152,7 +152,7 @@ fn tag(matches: ArgMatches) { let name = cmd_matches.value_of("name").unwrap().to_owned(); let mut oid = cmd_matches.value_of("oid").unwrap_or("").to_owned(); if oid == "" { - oid = data::get_head().expect("Cannot read HEAD"); + oid = data::get_ref("HEAD".to_owned()).expect("Cannot read HEAD"); } base::create_tag(name, oid); }