From da2967c7366ade69f330e897ce763151c6e57301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Val=C3=A9rio?= Date: Sat, 7 Nov 2020 23:01:19 +0000 Subject: [PATCH] step thirty one: implement symbolic refs idea --- src/data.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/data.rs b/src/data.rs index f6d2708..85f8141 100644 --- a/src/data.rs +++ b/src/data.rs @@ -55,8 +55,14 @@ pub fn update_ref(reference: String, oid: String) { } pub fn get_ref(reference: String) -> Result> { - let oid = fs::read_to_string(format!("{}/{}", RGIT_DIR, reference))?; - return Ok(oid); + let ref_path = format!("{}/{}", RGIT_DIR, reference); + let value = fs::read_to_string(ref_path)?; + + if !value.is_empty() && value.starts_with("ref:") { + let new_ref: Vec<&str> = value.splitn(2, ":").collect(); + return get_ref(new_ref[1].to_owned()); + } + return Ok(value); } pub fn iter_refs() -> Vec<(String, String)> {