step thirty five: write symbolic refs
This commit is contained in:
parent
1d810df2ae
commit
0e813bb9e7
12
src/data.rs
12
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) {
|
pub fn update_ref(mut reference: String, value: RefValue, deref: bool) {
|
||||||
assert!(!value.symbolic);
|
|
||||||
reference = get_ref_internal(reference, deref).0;
|
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 path = format!("{}/{}", RGIT_DIR, reference);
|
||||||
let mut parents = Path::new(&path).ancestors();
|
let mut parents = Path::new(&path).ancestors();
|
||||||
parents.next();
|
parents.next();
|
||||||
|
|
||||||
let parent = parents.next().unwrap().to_str().unwrap();
|
let parent = parents.next().unwrap().to_str().unwrap();
|
||||||
fs::create_dir_all(parent).expect("Cannot create required dirs");
|
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 {
|
pub fn get_ref(reference: String, deref: bool) -> RefValue {
|
||||||
|
|
Loading…
Reference in New Issue