diff --git a/src/remote.rs b/src/remote.rs index b4ddeeb..0ace815 100644 --- a/src/remote.rs +++ b/src/remote.rs @@ -3,10 +3,24 @@ use std::collections::HashMap; #[path = "data.rs"] mod data; +static REMOTE_REFS_BASE: &'static str = "refs/heads/"; +static LOCAL_REFS_BASE: &'static str = "refs/remote/"; + pub fn fetch(path: String) { - println!("Will fetch the following refs:"); - for (refname, _) in get_remote_refs(path, "refs/heads").iter() { - println!("- {}", refname); + // Get refs from server + let refs = get_remote_refs(path, REMOTE_REFS_BASE); + + // Update local refs to match server + for (remote_name, value) in refs.iter() { + let refname = remote_name.trim_start_matches(REMOTE_REFS_BASE); + data::update_ref( + format!("{}/{}", LOCAL_REFS_BASE, refname), + data::RefValue { + symbolic: false, + value: value.clone(), + }, + true, + ) } }