From 0e813bb9e74e1aaff0d9a7630711595d63ca0fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Val=C3=A9rio?= Date: Sun, 8 Nov 2020 13:18:29 +0000 Subject: [PATCH] step thirty five: write symbolic refs --- src/data.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/data.rs b/src/data.rs index 40098e1..a3724d3 100644 --- a/src/data.rs +++ b/src/data.rs @@ -50,15 +50,23 @@ pub fn get_object(hash: String, expected: String) -> String { } pub fn update_ref(mut reference: String, value: RefValue, deref: bool) { - assert!(!value.symbolic); reference = get_ref_internal(reference, deref).0; + let content: String; + + assert!(value.value != ""); + if value.symbolic { + content = format!("ref: {}", value.value); + } else { + content = value.value; + } + let path = format!("{}/{}", RGIT_DIR, reference); let mut parents = Path::new(&path).ancestors(); parents.next(); let parent = parents.next().unwrap().to_str().unwrap(); fs::create_dir_all(parent).expect("Cannot create required dirs"); - fs::write(path, value.value).expect("Failed to updated HEAD"); + fs::write(path, content).expect("Failed to updated HEAD"); } pub fn get_ref(reference: String, deref: bool) -> RefValue {